我可以防止 Tomcat 在重启时覆盖 catalina.out 吗?

问题描述 投票:0回答:0

默认的 Tomcat 8.5 配置在作为守护进程运行时将 stdout 和 stderr 的内容输出到 $CATALINA_HOME/logs/catalina.out(如果在启动参数中指定,则输出 catalina.err)。这些文件中包含低级系统消息、启动/关闭输出以及错误堆栈跟踪。不幸的是,当 Tomcat 重新启动时,这些文件会被覆盖。我不止一次忘记了这个事实,当我们遇到问题时,我的第一个想法是反弹应用程序服务器。当我这样做时,catalina.out 之前的内容消失了,我们无法通过日志返回来寻找问题的根本原因。有没有办法让我和其他管理员免受我们自己的伤害,并在启动时附加到 catalina.out/.err 而不是覆盖它?

我相信“正确”的答案是为正在服务的应用程序实施正确的错误处理和单独的日志记录,但似乎我们应该能够通过简单的配置更改来利用这个内置工具,而不是尝试对源代码不可用的第三方应用程序代码进行修改。

另外,在我们的例子中,logrotate 每周轮换 catalina.out,所以我不担心文件变得太大。我考虑过可能在 shutdown.sh 中调用 logrotate,但我们也有 logrotate 做日志清理;如果我们希望每天能够归档多个日志,我们将不得不打破关闭日志的 logrotate 命名约定,这将意味着由于关闭而创建的旧日志永远不会被清理,如果我理解正确。

java tomcat logging logrotate tomcat8.5
© www.soinside.com 2019 - 2024. All rights reserved.