我们的生产环境中有 tomcat 服务器。tomcat 突然停止生成 stdout 日志。tomcat 上次生成日志是在一个月前,stdout 日志文件的大小为5006 千字节。突然没有生成 stdout 日志的原因是什么?日志对我们来说至关重要,请帮我找出这个问题
答案1
对于在 tomcat 日志配置中定义的每个记录器,只有一个输出文件。Tomcat 在启动时打开此文件并将输出重定向到那里。就是这样(从 Tomcat 方面)
但是,有一个名为 logrotate 的程序作为 cron 作业执行。它将当前输出文件复制到新文件,然后截断(清空)当前文件并重命名。它还会重命名所有以前的备份并压缩它们,然后删除最旧的备份。由于清空和重命名的日志文件的句柄与以前相同,因此 tomcat 会继续写入该文件,并且它对用户来说是一个新文件。但事实并非如此。
如果未执行 logrotate 或者没有针对 tomcat 的有效配置(因为日志文件名或位置可能由于 tomcat 更新而发生变化,但 logrotate 配置没有改变),则当前日志文件将继续收集输出,因为它们的内容永远不会被移走,也不会再被重命名。
检查系统日志中是否有任何 logrotate 错误消息(或者是否有 cron 消息表明 logrotate 正在运行 - 但由于 logrotate 还处理 syslog 和几乎所有其他日志,所以您会注意到)