java - 如何区分日志文件中的 log4j session 与同一 Web 应用程序的副本?

标签 java logging log4j

只有一个文件。它是在网络应用副本运行时同时编写的。

如何从其他日志行中仅过滤一条 session 日志消息?

最佳答案

使用包含 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(通过属性文件),并确保您记录每个请求的第一件事是 session 标识符。它不太合适(或有用),但它可以用于小批量应用程序。

关于java - 如何区分日志文件中的 log4j session 与同一 Web 应用程序的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763925/

相关文章:

java - 多个 ComboBox JavaFX

google-app-engine - 日志未嵌套在灵活 VM 中的请求下

python - 在导入模块之前模拟

java - 调试级别记录语句性能

log4j - 在记录器 Log4j 中打印上下文根

java - Enumeration<T> 在哪里实现?

java - Jetty websocket client.start 不存在

java - 如何在我的应用程序上显示 Google 点动画?

python - Pytest:如何将日志重定向到控制台和使用 tmp_path fixture 创建的 tmp 文件

java - UBUNTU - java 编译但未执行 - log4j ClassNotFoundException