温馨提示×

CentOS Tomcat配置日志管理技巧有哪些

小樊
38
2025-12-21 11:54:56
栏目: 智能运维

CentOS Tomcat 日志管理实用技巧

一 日志目录与快速查看

  • 默认日志目录为:$CATALINA_HOME/logs,常见文件包括:catalina.outcatalina.[日期].loglocalhost.[日期].loglocalhost_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 依托系统计划任务,配置简单、与运维体系兼容性好,可按需二选一或组合使用。

三 访问日志与运行日志配置要点

  • 访问日志(记录 HTTP 请求)

    • 配置位置:$CATALINA_HOME/conf/server.xml 中的 AccessLogValve
    • 常用示例:
      • <Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs” prefix=“localhost_access_log.” suffix=“.txt” pattern=“%h %l %u %t “%r” %s %b” />
    • 常用 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.jartomcat-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(如 DailyRollingFileAppenderRollingFileAppender)。
      • 重启 Tomcat 验证滚动与输出。
  • 集中化与审计

    • 通过 rsyslog 将 Tomcat 日志发送到远程 Syslog 服务器,便于集中存储、检索与审计;可与 logrotate 配合做本地保留策略。

0