Java log4j滚动文件追加器-多线程问题?

Java log4j滚动文件追加器-多线程问题?,java,logging,log4j,Java,Logging,Log4j,Log4J滚动文件追加器是否存在任何已知错误。多年来,我一直在愉快地使用log4j,但我并不知道这一点。我的一位同事建议存在一些已知的问题(我发现了一个Bugzilla条目),在重载情况下,滚动文件追加器(我们使用基于时间的追加器)在午夜发生滚动时可能无法正确执行 Bugzilla入口- 欣赏他人如何克服这一问题的意见和建议 谢谢, Manglu我自己也没有遇到过这个问题,从bug报告中,我怀疑这是非常罕见的。对于我开发和维护的应用程序,Th Log4j RollingFileAppender始

Log4J滚动文件追加器是否存在任何已知错误。多年来,我一直在愉快地使用log4j,但我并不知道这一点。我的一位同事建议存在一些已知的问题(我发现了一个Bugzilla条目),在重载情况下,滚动文件追加器(我们使用基于时间的追加器)在午夜发生滚动时可能无法正确执行

Bugzilla入口-

欣赏他人如何克服这一问题的意见和建议

谢谢,
Manglu

我自己也没有遇到过这个问题,从bug报告中,我怀疑这是非常罕见的。对于我开发和维护的应用程序,Th Log4j RollingFileAppender始终以可预测和可靠的方式工作

如果我理解正确的话,这个特定的bug只有在有多个Log4j实例的情况下才会发生,就像您同时运行同一个应用程序的多个实例,并写入同一个日志文件一样。然后,当处于滚动时间时,一个实例无法锁定该文件以删除该文件并归档其内容,从而导致要归档的数据丢失


我无法与你的同事提到的任何其他已知bug交谈,除非你想具体引用它们。一般来说,我相信Log4j对于生产应用程序来说是可靠的。

我自己也没有遇到过这个问题,从bug报告中,我怀疑这是非常罕见的。对于我开发和维护的应用程序,Th Log4j RollingFileAppender始终以可预测和可靠的方式工作

如果我理解正确的话,这个特定的bug只有在有多个Log4j实例的情况下才会发生,就像您同时运行同一个应用程序的多个实例,并写入同一个日志文件一样。然后,当处于滚动时间时,一个实例无法锁定该文件以删除该文件并归档其内容,从而导致要归档的数据丢失


我无法与你的同事提到的任何其他已知bug交谈,除非你想具体引用它们。总的来说,我相信Log4j对于生产应用程序是可靠的。

@kg,这种情况也发生在我身上。这正是情况。同一程序的2个实例。 我将其更新为较新的rolling.RollingFileAppender,而不是使用DailyFileRoller(不管它叫什么)

我通过crontab同时运行两个实例。实例输出尽可能多的消息,直到达到5秒。它们使用System.currentTimeMillis测量1秒的时间,并附加到计数器以估计循环的5秒时间周期。所以这个测试的开销最小。每个输出日志消息包含一个递增的数字,该消息包含从命令行设置的标识符,以便能够将它们分开

通过将日志消息顺序放在一起,其中一个进程成功地从序列的开始写入到结束,另一个进程丢失其输出的第一个条目(从0开始)


这真的应该被修复…

@kg,这也发生在我身上。这正是情况。同一程序的2个实例。 我将其更新为较新的rolling.RollingFileAppender,而不是使用DailyFileRoller(不管它叫什么)

我通过crontab同时运行两个实例。实例输出尽可能多的消息,直到达到5秒。它们使用System.currentTimeMillis测量1秒的时间,并附加到计数器以估计循环的5秒时间周期。所以这个测试的开销最小。每个输出日志消息包含一个递增的数字,该消息包含从命令行设置的标识符,以便能够将它们分开

通过将日志消息顺序放在一起,其中一个进程成功地从序列的开始写入到结束,另一个进程丢失其输出的第一个条目(从0开始)


这真的应该被解决…

嗨,康斯坦丁,这也是我的观察结果。我已经安全地使用log4j很多年了。我会调查并汇报。谢谢,MangluHi Konstantin,这也是我的观察结果。我已经安全地使用log4j很多年了。我会调查并汇报。谢谢你,Manglu