1

渡されたコマンドライン引数に従って、SMSをさまざまなモバイルネットワークに送信する単一のファイルがあります。Vodafone、3ネットワーク、T-Mobile、O2など。したがって、議論が通過したとき

$Run SMSDaemon 3Network  // sends sms to 3 networks's mobile users
$Run SMSDaemon Vodafone  // sends sms to Vodafone  mobile users
$Run SMSDaemon TMobile  // sends sms to TMobile  mobile users
$Run SMSDaemon O2    // sends sms to O2 mobile users

ここで、モバイルネットワークに応じてログ情報やデバッグメッセージを個別に取得できるように、個別のネットワーク用に個別のログファイルを作成したいと思います。

SMSDaemonのファイルは1つしかないので、次のことを試しましたが、ファイルに何も書き込まれていません。log4j.propertiesファイルで定義されているファイルにのみ書き込んでいます。だから、私はlog4j.propertiesに何を書くべきか、そしてこのJavaファイルに何を書くべきか混乱していますか?

public static void main(String[] args) {
if( args.length != 1  {  return;}
networkUnique = args[0];
setLogProps(networkUnique);
//other codes and in setLogProps method 

private static void setLogProps(String networkUnique)
{
log = Logger.getLogger(networkUnique);
Properties logprops=new Properties();
logprops.setProperty("log4j.appender.file","org.apache.log4j.FileAppender");
logprops.setProperty("log4j.appender.file.maxFileSize","300MB");
logprops.setProperty("log4j.appender.file.maxBackupIndex","100");
logprops.setProperty("log4j.appender.file.File","/etc/sms/"+networkUnique+".log");
logprops.setProperty("log4j.appender.file.threshold","debug");
logprops.setProperty("log4j.appender.file.layout","org.apache.log4j.PatternLayout");
logprops.setProperty("log4j.appender.file.layout.ConversionPattern","%d [%t] %-5p  [%-35F : %-25M : %-6L] %-C -%m%n"); 
logprops.setProperty("log4j.appender.stdout","org.apache.log4j.FileAppender"); 
PropertyConfigurator.configure(logprops); 
log.info("Log message Starting for "+ networkUnique);
}

log4j.propertiesファイルには以下が書き込まれます。すべてのログは、このプロパティで定義されているnetwork.logファイルに書き込まれます。これは私の要件に従っていません。SMSDaemonsetLogPropsメソッドで定義された個別のネットワーク用の個別のログが必要です。

# Define the root logger with appender file
#log = /etc/sms/
log4j.rootLogger = info, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
#log4j.appender.FILE.File=${log}/network.log

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

提案してください。

前もって感謝します。

4

2 に答える 2

1

目標を達成するには、さまざまなアペンダーを作成する必要があります。この構成を試してください:

<appender name="3Network" class="org.apache.log4j.FileAppender">
    <param name="file" value="logs/3Network.log" />
    <param name="append" value="true" />        
</appender> 
<appender name="Vodafone" class="org.apache.log4j.FileAppender">
    <param name="file" value="logs/Vodafone.log" />
    <param name="append" value="true" />        
</appender> 
<appender name="TMobile" class="org.apache.log4j.FileAppender">
    <param name="file" value="logs/TMobile.log" />
    <param name="append" value="true" />        
</appender> 

次のように書くことができます:

log4j.appender.TMobile=org.apache.log4j.FileAppender
log4j.appender.TMobile.File=logs/TMobile.log.. 

等々..

これが問題の解決に役立つことを願っています。こちらもご覧ください -リファレンス

于 2012-10-07T06:47:00.983 に答える
1

Loggerネットワークに基づいてさまざまなクラスを作成することをお勧めします。

     class com.netwrok.Network1Logger{
          public void logMessage(String className, String message, String Level);
     }

     class com.netwrok.Network2Logger{
          public void logMessage(String className, String message, String Level);
     }

次に、以下のように更新log4j.propertiesします。

    # Root logger option
    log4j.rootLogger=INFO, RootFileAppender

    #Network1 Logger option
    log4j.logger.com.netwrok.Network1Logger=INFO,Network1FileAppender

    #Network2 Logger option
    log4j.logger.com.netwrok.Network2Logger=INFO,Network2FileAppender


    # RootFileAppender - used to log messages in the root.log file.
    log4j.appender.RootFileAppender=org.apache.log4j.FileAppender
    log4j.appender.RootFileAppender.File=root.log
    log4j.appender.RootFileAppender.MaxFileSize=100MB
    log4j.appender.RootFileAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.RootFileAppender.layout.ConversionPattern= %5p [%t] (%F:%L) - %m%n


    # Network1FileAppender- used to log messages in the shunted.log file.
    log4j.appender.Network1FileAppender=org.apache.log4j.FileAppender
    log4j.appender.Network1FileAppender.File=shunted.log
    log4j.appender.Network1FileAppender.MaxFileSize=10MB
    log4j.appender.Network1FileAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.Network1FileAppender.layout.ConversionPattern= %5p [%t] (%F:%L) - %m%n

    # Network2FileAppender- used to log messages in the shunted.log file.
    log4j.appender.Network2FileAppender=org.apache.log4j.FileAppender
    log4j.appender.Network2FileAppender.File=shunted.log
    log4j.appender.Network2FileAppender.MaxFileSize=10MB
    log4j.appender.Network2FileAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.Network2FileAppender.layout.ConversionPattern= %5p [%t] (%F:%L) - %m%n

望まない場合は、ロガーをルートし、シャットダウンしてください。

于 2012-10-07T06:49:24.793 に答える