我正在使用 Tomcat 8 在 Window 10 中运行应用程序(作为窗口服务运行)。
我想通过以下两种方法中的任何一种来确认如何避免 STDOUT 或 STDERR 日志文件太大:
当大小达到 20MB 时创建新的 STDOUT 或 STDERR 日志?有什么方法可以实现上述任何方法吗?
简短的回答:你不能。
虽然理论上Procrun(将 Tomcat 作为 Window 服务启动的可执行文件)可以定期将标准输出和错误流重定向到新文件(使用类似这个问题的技术),但实际上它不会:标准流的重定向在启动期间只执行一次。
源代码中有一些提示表明 Procrun 中考虑了基于时间的旋转功能(参见github),但从未实现过。您可以向项目的 JIRA添加功能请求。
当今可用的最佳解决方案是不要将您的日志发送到stdout/stderr
. 所有合适的日志框架都实现了某种轮换日志文件。
在 Tomcat 的情况下,您只需要:
ConsoleHandler
中的logging.properties
.handlers
.handlers = 1catalina.org.apache.juli.AsyncFileHandler
剩余的处理程序每天写入catalina.<date>.log
并轮换。System.out/System.err
处理程序:
swallowOutput="true"
context.xml
<Context swallowOutput="true">
...
</Context>
java.util.logging
,请将日志记录系统配置为记录到文件而不是控制台。