Debian Tomcat日志管理实操指南
一 基础路径与关键文件
- 日志默认目录
- APT安装:日志在**/var/log/tomcat/;配置文件在/etc/tomcat9/conf/(版本号可能为8/9**)。
- 手动安装:日志在**/opt/tomcat/logs/;配置文件在/opt/tomcat/conf/**。
- 核心日志与作用
- catalina.out:标准输出/错误(合并控制台输出)。
- catalina.YYYY-MM-DD.log:Catalina引擎按日期分割日志。
- localhost.YYYY-MM-DD.log:Tomcat内部组件日志。
- manager.YYYY-MM-DD.log / host-manager.YYYY-MM-DD.log:管理应用日志。
- localhost_access_log.YYYY-MM-DD.txt:访问日志(HTTP请求),默认关闭需手动开启。
- 环境与配置定位
- 使用systemd时,可通过systemctl status tomcat9查看进程与**$CATALINA_BASE**;日志目录通常为**$CATALINA_BASE/logs**,配置为**$CATALINA_BASE/conf/logging.properties与$CATALINA_BASE/conf/server.xml**。
二 启用与配置访问日志
- 编辑**$CATALINA_BASE/conf/server.xml**,在**内添加或取消注释AccessLogValve**:
<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
- %h:客户端IP;%t:请求时间;%r:请求行(方法+URI+协议);%s:状态码;%b:响应字节数;%{User-Agent}i:用户代理。
- 扩展示例:pattern=“%h %l %u %t “%r” %s %b “%{Referer}i” “%{User-Agent}i””。
三 日志轮转与清理
- 系统级轮转(推荐):创建**/etc/logrotate.d/tomcat**
/var/log/tomcat/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 tomcat tomcat
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/tomcat.pid 2>/dev/null` 2>/dev/null || true
endscript
}
- 测试与生效
- 模拟运行:logrotate -d /etc/logrotate.d/tomcat
- 强制轮转:logrotate -f /etc/logrotate.d/tomcat
- 注意事项
- 使用copytruncate可避免重启但存在极小概率丢日志;对catalina.out常用“轮转+信号通知”方式更稳妥。
- 若PID文件路径不同,请将**/var/run/tomcat.pid替换为实际路径(如/run/tomcat9.pid**)。
四 日志级别与格式调整
- 编辑**$CATALINA_BASE/conf/logging.properties**
- 全局与控制台
- .level = INFO
- java.util.logging.ConsoleHandler.level = INFO
- java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
- 文件处理器(JULI,异步)
- 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.formatter = java.util.logging.SimpleFormatter
- 1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
- 1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
- 组件细化
- org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
- 生效方式:sudo systemctl restart tomcat9。
五 查看分析与集中管理
- 常用查看
- 实时跟踪:tail -f $CATALINA_BASE/logs/catalina.out
- 关键字过滤:grep -i “error” $CATALINA_BASE/logs/catalina.out
- 分页查看:less $CATALINA_BASE/logs/catalina.out
- 按大小/数量的文件处理器(可选)
- 在logging.properties中配置java.util.logging.FileHandler(示例:单个文件10MB、保留5个备份),适合控制catalina.out体积。
- 集中式日志
- 小规模可用ELK/Graylog集中收集与可视化;大规模建议仅本地保留短期日志(如7天),远程长期存储与分析。