Linux Tomcat如何进行日志管理
导读:Linux Tomcat日志管理实操指南 一 日志类型与存放路径 日志默认位于 $CATALINA_HOME/logs,常见文件与作用如下: catalina.out:标准输出/错误重定向文件,默认不自动切割,长期写入易膨胀。 cata...
Linux Tomcat日志管理实操指南
一 日志类型与存放路径
- 日志默认位于 $CATALINA_HOME/logs,常见文件与作用如下:
- catalina.out:标准输出/错误重定向文件,默认不自动切割,长期写入易膨胀。
- catalina.yyyy-MM-dd.log:Catalina 引擎运行日志,按日期切分。
- localhost.yyyy-MM-dd.log:应用初始化、未处理异常等。
- localhost_access_log.yyyy-MM-dd.txt:访问日志,需在 server.xml 中启用。
- manager.yyyy-MM-dd.log / host-manager.yyyy-MM-dd.log:管理应用日志。
- 建议在 $CATALINA_BASE/conf/logging.properties 中调整日志级别与输出方式,在 $CATALINA_BASE/conf/server.xml 中配置访问日志 Valve。
二 核心配置与常用做法
- 调整日志级别(减少噪音/定位问题)
- 编辑 conf/logging.properties,将全局或指定 Logger 级别调为 WARNING/ERROR 等;如:
- 全局或组件级别:org.apache.catalina.level = WARNING
- 启动阶段:org.apache.catalina.startup.level = WARNING
- 修改后需重启 Tomcat 生效。
- 编辑 conf/logging.properties,将全局或指定 Logger 级别调为 WARNING/ERROR 等;如:
- 启用并配置访问日志(server.xml)
- 取消注释并调整 AccessLogValve,示例:
< Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" rotatable="true" maxDays="30" pattern="%h %l %u %t "%r" %s %b" /> - 常用 pattern:common(%h %l %u %t %r %s %b)、combined(在 common 基础上增加 Referer 与 User-Agent)。
- 取消注释并调整 AccessLogValve,示例:
- 启用异步日志(降低同步写磁盘对性能的影响)
- 将 FileHandler 替换为 AsyncFileHandler(Tomcat 8+ 支持):
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 - 可按需为各 Logger 设置 level(如 FINE/INFO/WARNING)。
- 将 FileHandler 替换为 AsyncFileHandler(Tomcat 8+ 支持):
三 日志轮转与清理
- 使用 logrotate 管理 catalina.out 及按日期切分的日志
- 新建 /etc/logrotate.d/tomcat:
/opt/tomcat/logs/catalina.out { copytruncate daily rotate 7 compress missingok notifempty } /opt/tomcat/logs/catalina.*.log { copytruncate daily rotate 7 compress missingok } /opt/tomcat/logs/localhost.*.log { copytruncate daily rotate 7 compress missingok } - 说明:copytruncate 适用于被进程持续持有的文件(如 catalina.out);按日期切分的日志也可用 copytruncate 或配合脚本清理。
- 新建 /etc/logrotate.d/tomcat:
- 定时清理旧日志(可选)
- 示例脚本(删除 7 天前 .log):
#!/bin/bash find /opt/tomcat/logs/ -type f -mtime +7 -name "*.log" -delete - 加入 crontab:
0 0 * * * /opt/tomcat/bin/cleanup_logs.sh。
- 示例脚本(删除 7 天前 .log):
四 监控与告警
- 集中化日志与可视化
- 使用 Filebeat → Logstash → Elasticsearch → Kibana(ELK) 采集并分析 catalina.out、访问日志等,构建仪表盘与告警规则。
- 主机与业务监控
- 使用 Zabbix 通过脚本/索引统计异常数量,设置触发器进行告警;也可选用 Graylog、Splunk 等平台。
五 安全与维护建议
- 权限最小化
- 通过 catalina.sh 的 UMASK 控制日志文件权限,例如:UMASK 0022,避免敏感信息被非授权用户读取。
- 访问控制与信息泄露防护
- 限制日志目录访问权限;隐藏或更改响应头 Server 字段,降低版本暴露风险。
- 审计与巡检
- 定期检查 catalina.out 与 localhost.log* 中的异常堆栈、权限错误、频繁 4xx/5xx 等,结合监控平台设置阈值告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Tomcat如何进行日志管理
本文地址: https://pptw.com/jishu/767219.html
