我已设置 Logrotate 以每晚轮换我的 JBoss Application Server 4.2.2.GA 日志。在日志文件被轮换并且 JBoss 再次开始写入它们之后,新的日志文件以与前一个日志文件中的字符一样多的 NUL 字符开头,然后是新的日志消息。例如,如果 JBoss server.log 文件的长度为 5000 字节,那么在轮换之后,新的 server.log 文件将以 5000 个 NUL 字符开头。几天后,server.log 以 NUL 字符开头,相当于所有前几天日志文件中的字符组合。似乎 JBoss 正在记住它在日志文件中的位置,并在截断文件中从中断的地方开始。这是我的 JBoss 的 logrotate 配置:
/apps/jboss-4.2.2.GA/server/default/log/*log {
daily
rotate 30
compress
notifempty
copytruncate
missingok
nocreate
}
我不能每晚重新启动 JBoss,因为那会导致过多的停机时间。我也不能使用 log4j DailyRollingFileAppender,因为它不会删除旧的日志文件。有没有人让 logrotate 与 JBoss 一起正常工作?