Strutsリファレンス(逆引き)

Strutsリファレンス
 
Web struts.wasureppoi.com
ログ情報をスレッドやユーザ単位で識別する(NDC)
スポンサード リンク

WEBアプリケーションなどの、マルチスレッド環境下でログファイルを出力すると、どのスレッドが出力したか、どのユーザが出力したかなど、特定できません。

特定しようとする場合、クライアント情報やスレッド情報を、ネストする階層下へ引き継がなくてはさりません。

しかし、NDCを使用すればネストする階層下へ引き継がなくてもユーザ情報などを付加してログを出力できます。

NDCは、メッセージをスレッド単位に管理します。

import org.apache.log4j.NDC;

public class Logging {

 public static void main(String[] args) throws Exception {

   org.apache.log4j.Logger log
     = org.apache.log4j.Logger.getLogger(this.getClass());

  NDC.push("USER01");
  log.info("RECORD-No1" );
  NDC.push("192.168.0.1");
  log.info("RECORD-No2" );
  NDC.pop();
  log.info("RECORD-No3" );
  NDC.pop();
  log.info("RECORD-No4" );
  NDC.remove();

 }
}

NDC#pushメソッドで、ユーザー情報などの文字列を付加します。
NDC#popメソッドで、付加した文字列を1つづつ削除します。
スレッドの最後で、NDC#removeメソッドで、NDCの情報を削除します。

ログ出力結果
NDC#pushメソッドで追加した文字列がログメッセージの前に付加されます。

01:28:02,265 INFO sample.pg.Logging - USER01:RECORD-No1
01:28:02,265 INFO sample.pg.Logging - USER01 192.168.0.1:RECORD-No2
01:28:02,281 INFO sample.pg.Logging - USER01:RECORD-No3
01:28:02,281 INFO sample.pg.Logging - :RECORD-No4


 ※NDCを使用する場合は、commons-loggingは使用できません。log4jで直接出力します。

スポンサード リンク

log4jでログ出力
Appenderを設定する
レイアウトを設定する(layout)
カテゴリを設定する(category)
コンソールにログ出力する(org.apache.log4j.ConsoleAppender)
ローテーションしながらファイルにログ出力する(org.apache.log4j.DailyRollingFileAppender)
ローテーションしながらファイルにログ出力する(org.apache.log4j.RollingFileAppender)
性能に配慮する(isDebugEnabled)
性能に配慮する(org.apache.log4j.AsyncAppender)
ログ情報をスレッドやユーザ単位で識別する(NDC)

Commonsへ
忘れっぽいエンジニアのJakarta Strutsリファレンス TOPへ