阅读量:3
CentOS Tomcat 日志管理实用技巧
一 日志目录与快速查看
- 默认日志目录为:$CATALINA_HOME/logs,常见文件包括:catalina.out、catalina.[日期].log、localhost.[日期].log、localhost_access_log.[日期].txt。
- 实时查看常用命令:
- 查看控制台输出:tail -f $CATALINA_HOME/logs/catalina.out
- 查看访问日志:tail -f $CATALINA_HOME/logs/localhost_access_log.*.txt
- 建议在排查问题时同时观察运行日志与访问日志,以快速定位异常来源与请求链路。
二 切割 catalina.out 的两种主流方式
-
方式一 使用 cronolog 按日期自动切割
- 安装:yum install -y cronolog
- 修改 $CATALINA_HOME/bin/catalina.sh:
- 将输出文件名改为带日期的格式:将 if [ -z “$CATALINA_OUT” ] 分支设置为:CATALINA_OUT=“$CATALINA_BASE/logs/catalina.out.%Y-%m-%d”
- 注释创建空文件的行:#touch “$CATALINA_OUT”
- 将启动行改为管道输出:将
- org.apache.catalina.startup.Bootstrap “$@” start >> “$CATALINA_OUT” 2>&1 & 替换为
- org.apache.catalina.startup.Bootstrap “$@” start 2>&1 | /usr/sbin/cronolog “$CATALINA_OUT” >> /dev/null &
- 重启 Tomcat 后,将按天生成如:catalina.out.2025-12-21 的文件。
-
方式二 使用 logrotate 轮转并压缩旧日志
- 新建配置 /etc/logrotate.d/tomcat(路径按实际调整):
- /opt/tomcat/logs/catalina.out { copytruncate daily rotate 30 missingok compress delaycompress size 100M dateext dateformat .%Y-%m-%d }
- 关键参数说明:
- copytruncate:复制后截断原文件,避免重启进程;若希望轮转时不截断,可改用 create 并在 postrotate 中发送信号通知进程重新打开日志。
- daily/size:支持按天或按大小触发轮转,建议同时设置以兼顾突发流量与日常增长。
- compress/delaycompress:压缩节省空间,delaycompress 常用于避免刚轮转的日志立即压缩影响读取。
- dateext/dateformat:使用日期后缀,便于归档与清理。
- 手动测试与生效:
- 测试配置:logrotate -d /etc/logrotate.d/tomcat(调试模式)
- 强制执行:logrotate -f /etc/logrotate.d/tomcat
- 说明:cronolog 在进程内按时间切分,日志边界更“干净”;logrotate 依托系统计划任务,配置简单、与运维体系兼容性好,可按需二选一或组合使用。
- 新建配置 /etc/logrotate.d/tomcat(路径按实际调整):
三 访问日志与运行日志配置要点
-
访问日志(记录 HTTP 请求)
- 配置位置:$CATALINA_HOME/conf/server.xml 中的 AccessLogValve。
- 常用示例:
- 常用 pattern:
- common:%h %l %u %t “%r” %s %b
- combined:在 common 基础上增加 %{Referer}i、%{User-Agent}i
- 按需添加耗时字段:%D(毫秒)、%T(秒)
- 若不需要访问日志,可直接注释该 Valve 节点。
-
运行日志级别与输出控制
- 配置文件:$CATALINA_HOME/conf/logging.properties
- 调整级别示例(减少噪音,生产常用 WARNING):
- 1catalina.org.apache.juli.AsyncFileHandler.level = WARNING
- 2localhost.org.apache.juli.AsyncFileHandler.level = WARNING
- java.util.logging.ConsoleHandler.level = WARNING
- 级别范围:SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST,也可使用 OFF/ALL。
- 如希望进一步精简输出,可移除或注释 ConsoleHandler,仅保留文件输出。
四 日志精简与集中化实践
-
精简输出
- 在 logging.properties 中将不关键包的日志级别提升到 WARNING/OFF,或将 ConsoleHandler 移除,避免控制台与 catalina.out 被大量低级别日志刷屏。
-
使用 Log4j 接管 stdout/stderr(更灵活的按天/按大小滚动)
- 适用场景:需要统一日志框架、复杂滚动策略或与应用日志统一治理。
- 基本步骤(以 Tomcat 7 为例):
- 将 log4j-1.2.17.jar、tomcat-juli-adapters.jar 放入 $CATALINA_HOME/lib;将 tomcat-juli.jar 替换到 $CATALINA_HOME/bin。
- 在 $CATALINA_HOME/conf/context.xml 的
上增加:swallowOutput=“true”(确保 stdout/stderr 被 Log4j 接管)。 - 可移除或重命名 conf/logging.properties,在 lib/ 下放置 log4j.properties 自定义 Appender(如 DailyRollingFileAppender 或 RollingFileAppender)。
- 重启 Tomcat 验证滚动与输出。
-
集中化与审计
- 通过 rsyslog 将 Tomcat 日志发送到远程 Syslog 服务器,便于集中存储、检索与审计;可与 logrotate 配合做本地保留策略。
以上就是关于“CentOS Tomcat配置日志管理技巧有哪些”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm