Debian Tomcat日志优化配置指南
一 核心目标与总体思路
二 路径与级别配置
# 文件落盘目录
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
# 可选:更简洁的单行格式
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
# 控制台(多为 systemd 捕获,建议 INFO)
java.util.logging.ConsoleHandler.level = INFO
# Catalina、localhost 等核心日志(默认 INFO)
1catalina.org.apache.juli.FileHandler.level = INFO
2localhost.org.apache.juli.FileHandler.level = INFO
# 按需开启调试(问题定位时临时使用)
# 1catalina.org.apache.juli.FileHandler.level = FINE
# 2localhost.org.apache.juli.FileHandler.level = FINE
# 减少启动阶段冗余
org.apache.catalina.startup.level = WARNING
三 轮转与保留策略
# /etc/logrotate.d/tomcat
/opt/tomcat/logs/catalina.out {
daily
rotate 14
copytruncate
compress
missingok
notifempty
su tomcat tomcat
}
说明:每天轮转、保留14天、压缩旧日志;使用 copytruncate 避免重启或信号对接;设置 su 确保按 tomcat 用户权限写入。1catalina.org.apache.juli.FileHandler.limit = 10485760 # 10MB
1catalina.org.apache.juli.FileHandler.count = 7 # 保留7个
2localhost.org.apache.juli.FileHandler.limit = 10485760
2localhost.org.apache.juli.FileHandler.count = 7
说明:按大小滚动,配合 logrotate 做周期压缩与清理,更可控地管理磁盘占用。0 0 * * * find /opt/tomcat/logs/ -type f -mtime +7 -name "*.log" -delete
建议优先用 logrotate 统一管理,cron 作为补充。四 访问日志与性能优化
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="${catalina.base}/logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="combined"
resolveHosts="false"/>
说明:combined 包含 Referer/User-Agent,更利于安全与运营分析;不需要时可注释该 Valve 减少 I/O。handlers = 1catalina.org.apache.juli.AsyncFileHandler, \
2localhost.org.apache.juli.AsyncFileHandler, \
java.util.logging.ConsoleHandler
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.bufferSize = 8192
2localhost.org.apache.juli.AsyncFileHandler.level = INFO
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.bufferSize = 8192
说明:将文件日志改为异步输出,可显著降低高并发下的线程阻塞与响应抖动。五 安全与运维实践