log4j开始将零值字节写入日志文件

log4j开始将零值字节写入日志文件,log4j,Log4j,我们使用的是版本1.2.16的log4j,它使用的是RollingFileAppender。一切似乎都很好。但有时日志文件会损坏 下面是发生的情况。日志文件的开头包含大量零值字节,即十六进制零。之后,应用程序设置的消息将跟随。现在,如果我只是刷新日志文件并在应用程序中执行一些操作,那么零字节会一次又一次出现。重新启动服务器后,日志可以正常工作几天,但随后又出现了零字节 更新。我找到了似乎有效的解决办法。这就是我们现在轮换日志的方式 7za a -m0=lzma /opt/glassfish/do

我们使用的是版本1.2.16的log4j,它使用的是RollingFileAppender。一切似乎都很好。但有时日志文件会损坏

下面是发生的情况。日志文件的开头包含大量零值字节,即十六进制零。之后,应用程序设置的消息将跟随。现在,如果我只是刷新日志文件并在应用程序中执行一些操作,那么零字节会一次又一次出现。重新启动服务器后,日志可以正常工作几天,但随后又出现了零字节

更新。我找到了似乎有效的解决办法。这就是我们现在轮换日志的方式

7za a -m0=lzma /opt/glassfish/domains/domain1/old-logs/`date +logs_%Y-%m-%d.7z` /opt/glassfish/domains/domain1/logs/*
rm /opt/glassfish/domains/domain1/logs/*.log*

它似乎工作正常,log4j没有给出任何故障排除。

除了
滚动文件附加器
之外,您还使用
logrotate
吗?不,我不使用。然而,我发现它发生在一台服务器上,而不是在其他服务器上,并且刷新日志的脚本实际上与其他服务器有很大不同。我想,这个问题会在那之后消失。如果你能解决它,我会很感兴趣。我们目前遇到了一个类似的问题,很难找到它。在我看来,如果其他进程(除了log4j)干扰了它写入的文件,就会发生这种情况。我们将再监视3天,如果这个错误不再重现,我将发布我们在服务器上获得循环日志的方式,而不会出现问题。我发布了解决问题的方法。