我们有一个 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/