2016-10-03 6 views
-1

複数のlog4jロガーを初期化して、標準のlog4j.propertiesファイルをプロパティーの基礎として使用して独自のファイルに書き込むシナリオがあります。私はその後、ロガーを設定するために私のコード内のプロパティを修正したい。コードでは私のロガーを次のように設定しています:log4jプロパティー・ファイルをロードしてプログラムで変更する

PropertyConfigurator.configure(log4jpropertiespath); 

しかし、ファイルアペンダーと以下のようないくつかのプロパティを設定できる必要があります。具体的には、追加されたパッケージの数やロガーが初期化されているかどうかに関係なく、ロガーインスタンスが独自のログ情報を保持するようにAdditivityを設定します。

SimpleLayout layout = new SimpleLayout(); 
FileAppender appender = new FileAppender(layout, logFileName, true);  
this.logger.setAdditivity(false); 
this.logger.addAppender(appender); 

ご了承ください。

答えて

0

私はまだ、これは素晴らしいアイデア(ログファイルの任意の数を持つように、エトセトラ)であるとは思わないが、あなたはLogger.getLoggerメソッドをラップすることによってこれを行うことができ、この

public static Logger getPackageLogger(String packageName) { 
    Logger logger = Logger.getLogger(packageName); 
    if (logger.getAppender("myPackageAppender") == null) { 
     String logFileName = packageName + ".log"; // or something 
     SimpleLayout layout = new SimpleLayout(); 
     FileAppender appender = new FileAppender(
      layout, logFileName, true);  
     appender.setName("myPackageAppender"); 
     logger.setAdditivity(false); 
     logger.addAppender(appender); 
    } 
    return logger; 
} 
のようなもの

これは複数回呼び出すことができ、各個別の(パッケージ)ロガーオブジェクトを1回だけ構成する必要があります。

+0

私はより簡単なロギングシステムを使用するように実装を変更しました。提案していただきありがとうございます。 – user3190153

関連する問題