java - Log4j:每个请求一个日志文件

标签 java jakarta-ee log4j batch-processing

我们有一个 weblogic 批处理应用程序,它同时处理来自消费者的多个请求。我们使用 log4j 来记录目的。现在我们为多个请求登录到一个日志文件。调试给定请求的问题变得乏味,因为所有请求的日志都在一个文件中。

所以计划是每个请求有一个日志文件。消费者发送一个请求 ID,必须对其执行处理。现在,实际上可能有多个消费者向我们的应用程序发送请求 ID。所以问题是如何根据请求隔离日志文件。

我们不能每次都启动和停止生产服务器,因此排除了使用带有日期时间戳或请求 ID 的覆盖文件附加程序的要点。这是下面文章中解释的内容: http://veerasundar.com/blog/2009/08/how-to-create-a-new-log-file-for-each-time-the-application-runs/

我还尝试使用这些替代方案:

http://cognitivecache.blogspot.com/2008/08/log4j-writing-to-dynamic-log-file-for.html

http://www.mail-archive.com/log4j-user@logging.apache.org/msg05099.html

此方法可提供所需的结果,但如果同时发送多个请求,则无法正常工作。由于一些并发问题,日志会到处跑。

我希望你们能提供一些帮助。提前致谢....

最佳答案

这是我关于同一主题的问题: dynamically creating & destroying logging appenders

我在 Log4J 邮件列表上的一个线程中跟进了这个,我在该线程中讨论了做一些完全像这样的事情: http://www.qos.ch/pipermail/logback-user/2009-August/001220.html

Ceci Gulcu(log4j 的发明者)认为这不是一个好主意...建议改用 Logback。

无论如何,我们还是继续这样做了,使用了自定义文件附加程序。有关更多详细信息,请参阅我上面的讨论。

关于java - Log4j:每个请求一个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331128/

相关文章:

spring Controller 中的 java.lang.StackOverflowError

java - 无法让 Jacoco 使用离线仪器与 Powermockito 一起工作

jakarta-ee - java.lang.ClassFormat错误: Illegal class name "groovy/jmx/builder/package-info" in class file groovy/jmx/builder/package-info

java - log4j如何追加空行

java - 使用 Axis2 和 Netbeans 7 从 Web 服务服务器应用程序记录到 log4j 日志文件

java - 如何获得在 android studio 中打开新 Activity 的按钮?

java - 比较输入流的快速方法

java - 更改 ace 中浏览的默认按钮名称 :FileEntry

javascript - JSONObject 文本必须以 '{' 开头,位于 1 [字符 2 第 1 行]

java - 服务器更新 tomcat 7 后抛出 Log4J 错误