我们使用的是版本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没有对此进行任何排查。