@Beforeフィルタとlog4jのMDCを組み合わせてみました。
複数項目を出力したいので、NDCではなくMDCを使います。下記のようにして request
とsession
から情報を取得してキーを付けてMDCに登録します。
@Before(priority = 0)
public static void before() {
MDC.put("ip", request.remoteAddress);
MDC.put("id", session.getId());
}
log4j.propertiesで %X{key}
とすれば、登録した値をログに出力することができます。
# Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %X{ip} %X{id} %-5p ~ %m%n