0

これまで、次のような log4j のメソッドを使用してきました。

void writeMethod(String msg){
  StackTraceElement[] st = Thread.currentThread().getStackTrace();
  Logger log=Logger.getLogger(st[2]);
  log.info(msg);
}

これは、プロパティと共に、書き込みメソッドを呼び出したクラス/メソッドをログ ファイルに表示することを可能にし、アプリケーションの実行ごとに 1 つのログ ファイルのみが必要である限り、正常に機能しました。アプリケーションごとに多くのスレッドがあり、アプリケーションごとに複数のログ ファイルが必要です (数は事実上、無制限にすることができます)。複数のログ ファイルが必要なため、アプリケーションの起動時に log4j.properties ファイルを自動的に作成し、アプリケーションのスレッドごとに特定のアペンダーを使用します。

そのため、アペンダーは同様の名前が付けられl0, l1, l2 ....、それぞれが異なるログ ファイルに書き込みます。

これは、次のようなものを使用していることを意味します。

void writeMethod(int threadNr ,String msg){

      Logger log=Logger.getLogger("l"+threadNr);
      log.info(msg);
    }

私の質問は: この 2 番目のメソッドを使用できますか? また、ロギング メソッドを呼び出したメソッド/クラスを記述できるという以前の機能も使用できますか?

4

1 に答える 1

1

プロパティファイルを使用してlog4jを構成します。レイアウトの例...

log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

そして、ここにlog4jリファレンスへのリンクがあります。スレッドごとにファイルが必要な場合は、いつでも複数のアペンダーを作成し、それぞれにロガーを作成できます。例えば。

// In your log4j config
log4j.logger.1=DEBUG

// In you code
Logger log = Logger.getLogger("1.ClassName");
于 2012-07-19T14:28:36.657 に答える