我能防止Tomcat在重启时覆盖 Catalina 吗?

6pp0gazn  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(314)

缺省的Tomcat8.5配置将stdout & stderr的内容输出到$ Catalina _HOME/logs/catalina.out(以及 Catalina .err,如果在启动参数中指定),在这些文件中有低级系统消息、启动/关闭输出以及错误的堆栈跟踪,不幸的是,这些文件在Tomcat重启时会被覆盖,我不止一次忘记了这个事实当我们遇到问题时,我的第一个想法是跳出应用服务器。当我这样做时, Catalina .out的先前内容消失了,然后我们不能通过日志来寻找问题的根本原因。有没有一种方法可以保存我和其他管理员免于自己,并在启动时附加到catalina.out/.err而不是覆盖它?
我相信“正确”的答案是为所服务的应用程序实现适当的错误处理和单独的日志记录,但似乎我们应该能够通过简单的配置更改来利用这种内置功能,而不是试图修改源代码不可用的第三方应用程序代码。
此外,在我们的例子中,logrotate负责每周轮换 Catalina .out,所以我不担心文件变得太大。我想过在www.example.com中调用logrotateshutdown.sh,但我们也有logrotate做日志清理;如果我们希望每天能够归档多个日志,我们将不得不打破关闭日志的logrotate命名约定,如果我理解正确的话,这意味着由于关闭而创建的旧日志将永远不会被清理。

mlnl4t2r

mlnl4t2r1#

当[Tomcat]作为守护进程运行时。
假设你使用的是jsvc,似乎没有一个选项可以 appending 到日志文件,而不是 * overwrite * 它们。你可以提交一个针对Commons project的增强请求来添加该功能。这看起来并不难实现。
我相信“正确”的答案将是为所服务的应用程序实现适当的错误处理和单独的日志记录[...]
我同意。写stdout并不是一个很好的实践,正如你所看到的,可能会导致一些你必须努力解决的问题。最好是使用一个真实的的日志框架,它已经知道如何添加,旋转等,而不必拼凑自己的特设工具集来复制已经存在的这种功能。

相关问题