我们有一个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
这种方法可提供理想的结果,但如果同时发送多个请求,则无法正常工作。由于一些并发性问题,日志在这里和那里。
我希望你们会有所帮助。提前致谢....
我在Log4J邮件列表中的某个线程上讨论了完全类似的操作:http : //www.qos.ch/pipermail/logback-
user/2009-August/001220.html
Ceci Gulcu(log4j的发明者)认为这不是一个好主意……建议使用Logback。
我们继续使用自定义文件追加程序进行了此操作。有关更多详细信息,请参见上面的讨论。
问题内容: 这是我的日志输出 我想要每个日志消息的时间戳,即 这是我的log4j配置文件 我该怎么做? 问题答案: 在您的PatternLayout中使用。 也可以采用格式模式,就像您可以选择所需的元素一样。如果省略格式模式,则日期将为ISO8601格式。
问题内容: 我有一个Web应用程序,并且我想为每个用户使用不同的日志,因此我可以了解该用户在系统上所做的事情的“历史记录”。 这是我到目前为止所拥有的: 问题是,作为Web应用程序,它是多线程的,所以AFAIK我不能一直使用并根据我要登录的用户来更改附加程序。我认为我应该为每个用户创建不同的内容,但这是正确的吗? 问题答案: 尝试切换到logback(log4j的后继者)。它带有一个Sifting
我用的是log4j2.14。1. 我想做的是有一个appender,它允许我每天有一个日志文件,但在N天后删除旧的日志(例如,我希望最多有10天的日志)。 我尝试过使用DirectWriteRolloverStrategy,它看起来不错,每天创建一个日志文件,但显然无法删除旧文件,因此我的日志目录中充满了日志;maxFiles属性似乎只设置了与文件模式匹配的时间段内允许的最大文件数(请参见http
我有一个webapp,我将它两次部署到tomcat服务器上(它有不同的版本,比如说1.0和2.0)。这个webapp配置了一个log4j。log4j的jar文件位于webapp的WEB-INF/lib文件夹中,而记录器的属性文件是从外部配置路径读取的。我希望两个webapps都将信息记录在同一个.log文件中,但实际发生的情况是,只有一个(1.0或2.0)登录到指定的文件中,而另一个则什么也不登录
我有以下Log4J配置,我如何删除超过一个月的日志? log=log/ log4j.appender.file.datePattern='.'YYYY-MM-DD-A log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%m%n
问题内容: 我们有几个同时运行的作业,它们必须为log4j使用相同的配置信息。他们都使用相同的附加程序将日志转储到一个文件中。有没有一种方法可以让每个作业动态命名其日志文件,以使它们保持独立? 谢谢 汤姆 问题答案: 您可以为每个作业传递Java系统属性吗?如果是这样,您可以像这样进行参数化: 然后在您的log4j.properties中: 您可以使用主机环境(例如)中的值填充Java系统属性,该