Debian Tomcat日志优化实践指南
一 基础与目录规划
二 核心日志配置与级别优化
.level = INFO
# 异步文件处理器(推荐)
1catalina.org.apache.juli.AsyncFileHandler.level = INFO
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.suffix = .log
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
# 控制台(可选,容器/调试时开启)
java.util.logging.ConsoleHandler.level = WARNING
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# 按需调优包级别(示例)
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.authenticator.level = WARNING
三 访问日志与性能权衡
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="${catalina.base}/logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t \"%r\" %s %b"
resolveHosts="false"/>
四 日志轮转与归档策略
# catalina.out:使用 copytruncate 适配运行中进程
/opt/tomcat/logs/catalina.out {
daily
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
}
# 其他 .log:按天轮转并 reload,避免句柄问题
/opt/tomcat/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
systemctl reload tomcat9 >/dev/null 2>&1 || true
endscript
}
五 运维与可观测性实践