log4j の NDC って使えるかも
Web 系のアプリとか、単一のユーザーオペレーションをスレッドに結びつけるようなアプリの場合、log4j の NDC って使えるかも。ユーザーIDのような情報とか表示させると、ログ解析が楽になるかな?
まだドキュメントちゃんと読んでないので、正しい使い方かどうか分からんケド (´・ω・`)
log4j依存になっちゃうけど、アプリケーション層内部なら問題なさそう。
ソース
テストプログラム
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.NDC; public class Main { public static void main(String[] args) { Log log = LogFactory.getLog(Main.class); // スレッドに情報をバインド NDC.push("This is NDC value."); // ログ出力 log.debug("This is debug message."); } }
log4j.properties
log4j.rootLogger=DEBUG, ROOT log4j.appender.ROOT=org.apache.log4j.ConsoleAppender log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout log4j.appender.ROOT.layout.ConversionPattern=%d{ISO8601} [%p] %c (%F:%L) %t NDC[%x] : %m%n
結果
2008-06-16 03:23:41,765 [DEBUG] Main (Main.java:15) main NDC[This is NDC value.] : This is debug message.