Eug*_*neP 8 java logging log4j
只有一个文件.它是在Web应用程序副本运行时同时编写的.
如何仅从其他日志行过滤一个会话日志消息?
Joh*_*n D 13
使用带有NDC或MDC信息的servlet过滤器是我见过的最好的方法.可以在http://wiki.apache.org/logging-log4j/NDCvsMDC上快速比较这两者.
我发现过去MDC对我来说效果更好.请记住,您需要更新log4j属性文件以包含您喜欢的任何版本(模式定义,请访问http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html).
有关使用servlet过滤器配置MDC的完整示例,请访问http://veerasundar.com/blog/2009/11/log4j-mdc-mapped-diagnostic-context-example-code/.
稍微容易配置,但明显较差的选项:您可以选择只为每个请求打印出线程ID(通过属性文件),并确保您记录每个请求的第一件事是会话标识符.它不适合(或有用),但它适用于小批量应用程序.
您可以使用org.apache.log4j.NDC设置包含特定应用程序实例的标识符的上下文消息,如下所示:
String appInstanceId = "My App Instance 1";
org.apache.log4j.NDC.push(appInstanceId);
// handle request
org.apache.log4j.NDC.clear();
Run Code Online (Sandbox Code Playgroud)
您可以在Web应用程序实例初始化期间或doPost()servlet方法内设置上下文.顾名思义,您还可以push在不同级别的多个调用的上下文中嵌套上下文.
请参阅Log4J手册中的"嵌套诊断上下文"部分.
| 归档时间: |
|
| 查看次数: |
10609 次 |
| 最近记录: |