centos中tomcat日志管理策略
导读:CentOS 下 Tomcat 日志管理策略 一 日志分类与存放路径 日志默认位于 $CATALINA_HOME/logs,常见文件与作用如下: catalina.out:标准输出与标准错误重定向的合并日志,默认不会自动切割,需通过外部...
CentOS 下 Tomcat 日志管理策略
一 日志分类与存放路径
- 日志默认位于 $CATALINA_HOME/logs,常见文件与作用如下:
- catalina.out:标准输出与标准错误重定向的合并日志,默认不会自动切割,需通过外部工具轮转。
- catalina.yyyy-mm-dd.log:JULI 按天切分的运行日志(由 logging.properties 配置)。
- localhost.yyyy-mm-dd.log:应用部署在 localhost 上下文的日志。
- localhost_access_log.yyyy-mm-dd.txt:访问日志,由 server.xml 中 AccessLogValve 生成。
- 管理类应用还有 manager、host-manager 的日志。以上路径与文件名可通过配置调整。
二 查看与检索
- 实时查看:在 $CATALINA_HOME/logs 下使用命令:
tail -f catalina.out;按 Ctrl+C 退出。 - 按时间段导出:例如
sed -n "/2023-10-01/,/2023-10-02/p" catalina.out > /tmp/tomcat_logs.txt。 - 过滤关键字:
tail -f catalina.out | grep error。 - 若以 systemd 管理 Tomcat,可用:
journalctl -u tomcat查看服务层面的启动、停止与守护进程日志。
三 轮转与清理
- 推荐方案对比
| 方案 | 适用场景 | 核心做法 | 优点 | 注意点 |
|---|---|---|---|---|
| logrotate 轮转 catalina.out | 沿用默认输出到控制台,需对 catalina.out 做按天/按大小切割与压缩 | 在 /etc/logrotate.d/tomcat 创建配置,使用 copytruncate 或配合 postrotate 触发 Tomcat 重新打开日志 | 系统自带、运维成本低、易统一合规 | 选择 copytruncate 简单,但存在极短的日志丢失窗口;用 postrotate 需确保 Tomcat 能安全重开日志 |
| cronolog 管道切割 | 希望由进程直接按时间命名输出 | 安装 cronolog,修改 bin/catalina.sh,将标准输出通过管道交给 cronolog 生成 catalina-%Y-%m-%d.out | 按时间精准切割、无额外轮转依赖 | 需改动启动脚本,升级 Tomcat 时注意变更同步 |
| Log4j 接管 JULI | 需要更灵活的 Appender、按天/按大小滚动、结构化输出 | 放置 log4j-1.2.17.jar、tomcat-juli.jar、tomcat-juli-adapters.jar,在 conf/context.xml 设置 swallowOutput=“true”,提供 log4j.properties | 功能强、可对接企业日志平台 | 版本匹配重要,变更后需充分回归测试 |
- 常用配置示例
- logrotate 示例(对 catalina.out 按天或超阈值切割)
手动测试:/opt/tomcat/logs/catalina.out { daily rotate 7 compress missingok notifempty copytruncate size 100M dateext }logrotate -d /etc/logrotate.d/tomcat(干跑),logrotate -f /etc/logrotate.d/tomcat(强制执行)。如以服务运行且使用 postrotate,可在 postrotate 中执行 Tomcat 的日志重开或通知命令(如 kill -USR1 或 systemd 友好信号),确保应用继续写入新文件。
- logrotate 示例(对 catalina.out 按天或超阈值切割)
四 访问日志与运行日志配置要点
- 访问日志(server.xml)
- 在 内配置 AccessLogValve,常用属性:directory、prefix、suffix、pattern。示例:
< Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> - 通过 pattern 可自定义字段(如 %a、%A、%b、%h、%H、%m、%p、%q、%r、%s、%t、%u、%U、%v、%D、%T 等),满足审计与性能分析需求。
- 在 内配置 AccessLogValve,常用属性:directory、prefix、suffix、pattern。示例:
- 运行日志(logging.properties)
- 调整 handlers 与各类 .level(如 SEVERE/WARNING/INFO/CONFIG/FINE/FINER/FINEST),控制输出级别与输出目标。
- 使用 FileHandler 的 limit/count/pattern 可实现按大小滚动(如
pattern=${ catalina.base} /logs/catalina.%g.out; limit=10485760; count=5),适合对单个日志文件大小有严格要求的场景。
五 集中化与容量规划
- 集中化采集
- 使用 rsyslog 将 Tomcat 日志发送到远程 Syslog 服务器,便于统一存储、检索与告警;也可结合 ELK Stack(Elasticsearch、Logstash、Kibana) 或 Splunk 做可视化分析与仪表盘。
- 容量与合规
- 结合业务峰值设置合理的保留周期与压缩策略(如 rotate 7~30、compress),对 catalina.out 采用按天或按大小切割,避免单文件过大影响分析与备份。
- 定期审计日志目录增长、清理过期归档,并监控磁盘使用率与 I/O 性能,必要时将历史日志下沉至对象存储或冷备介质。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos中tomcat日志管理策略
本文地址: https://pptw.com/jishu/787933.html
