Debian上Tomcat日志管理实操指南
一 核心配置文件与目录
二 配置日志级别与输出格式
# 全局级别
.level = INFO
# 使用异步文件处理器(若文件句柄占用高或写压力大可优先)
handlers = 1catalina.org.apache.juli.AsyncFileHandler, \
2localhost.org.apache.juli.AsyncFileHandler, \
3manager.org.apache.juli.AsyncFileHandler, \
4host-manager.org.apache.juli.AsyncFileHandler, \
java.util.logging.ConsoleHandler
# 文件日志:按组件拆分
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.suffix = .log
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.suffix = .log
3manager.org.apache.juli.AsyncFileHandler.level = INFO
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.suffix = .log
4host-manager.org.apache.juli.AsyncFileHandler.level = INFO
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.suffix = .log
# 控制台日志:便于前台调试
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
说明:
三 配置访问日志
<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"/>
常用 pattern:
四 日志轮转与保留策略
# 轮转 catalina.out(被外部进程持续写入,使用 copytruncate)
/opt/tomcat/logs/catalina.out {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}
# 轮转按日期命名的组件日志(JULI 已按日期滚动,仅做压缩与清理)
/opt/tomcat/logs/catalina.*.log
/opt/tomcat/logs/localhost.*.log
/opt/tomcat/logs/manager.*.log
/opt/tomcat/logs/host-manager.*.log {
daily
rotate 14
compress
missingok
notifempty
dateext
dateformat -%Y%m%d
}
sudo logrotate -d /etc/logrotate.d/tomcat # 语法检查(dry-run)
sudo logrotate -f /etc/logrotate.d/tomcat # 强制执行一次
五 验证与运维建议
tail -f $CATALINA_BASE/logs/catalina.out
tail -f $CATALINA_BASE/logs/localhost_access_log.*.txt
grep -i error $CATALINA_BASE/logs/catalina.*.log
sudo systemctl restart tomcat9 # 包安装常见服务名
# 或
$CATALINA_BASE/bin/shutdown.sh
$CATALINA_BASE/bin/startup.sh