温馨提示×

Tomcat日志在CentOS如何配置管理

小樊
43
2025-12-11 14:32:34
栏目: 智能运维

CentOS 上 Tomcat 日志的配置与管理

一 日志位置与实时查看

  • 日志默认目录为 $CATALINA_HOME/logs,常见文件包括:catalina.outcatalina.yyyy-mm-dd.loglocalhost.yyyy-mm-dd.loglocalhost_access_log.yyyy-mm-dd.txt、以及 manager/host-manager 相关日志。实时查看常用命令:
    • 查看控制台输出:cd $CATALINA_HOME/logs && tail -f catalina.out
    • 查看按天的运行日志:tail -f catalina.2025-12-11.log
    • 查看访问日志:tail -f localhost_access_log.2025-12-11.txt
    • 若以 systemd 管理 Tomcat,可用:journalctl -u tomcat.service -f
  • 以上路径与查看方式适用于常规安装与 systemd 场景。

二 运行日志与访问日志配置

  • 运行日志(JULI):编辑 $CATALINA_HOME/conf/logging.properties,为不同组件设置级别与输出。示例(将 catalina 日志级别调为 FINE):
    • handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
    • 1catalina.org.apache.juli.FileHandler.level = FINE
    • 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
    • 1catalina.org.apache.juli.FileHandler.prefix = catalina.
    • 1catalina.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter
  • 访问日志:编辑 $CATALINA_HOME/conf/server.xml,在 Host 内配置 AccessLogValve。示例(常用 Combined 模式字段):
    • <Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs” prefix=“localhost_access_log.” suffix=“.txt” pattern=“%h %l %u %t “%r” %s %b” />
  • 修改后重启 Tomcat 生效。

三 catalina.out 自动轮转方案

  • 方案 A(推荐)— 使用 logrotate 管理 catalina.out
    • 新建配置:/etc/logrotate.d/tomcat
      • /usr/local/tomcat/logs/catalina.out {
        • daily
        • rotate 7
        • compress
        • missingok
        • notifempty
        • create 640 tomcat tomcat
        • copytruncate
        • }
    • 说明:
      • 使用 copytruncate 可避免重启或信号通知;若使用 postrotate 发送 HUP,请确保 Tomcat 支持(如使用 kill -HUP 或 systemd 的日志句柄接管)。
      • 测试:logrotate -d /etc/logrotate.d/tomcat(语法检查),logrotate -f /etc/logrotate.d/tomcat(强制执行)。
  • 方案 B — 使用 cronolog 按日切分 stdout
    • 安装 cronolog(示例路径:/usr/local/sbin/cronolog
    • 修改 $CATALINA_HOME/bin/catalina.sh:将启动行改为
      • org.apache.catalina.startup.Bootstrap “$@” start 2>&1 |/usr/local/sbin/cronolog “$CATALINA_BASE/logs/catalina-%Y-%m-%d.out” &
    • 注释或删除 touch “$CATALINA_OUT” 行,重启 Tomcat 后在 logs 目录可见按日生成的 catalina-YYYY-MM-DD.out

四 日志级别与输出控制

  • 降低噪音或提升细节:在 logging.properties 调整级别(如 INFO/WARNING/FINE/FINER/FINEST/OFF)。示例:
    • .level = INFO
    • 1catalina.org.apache.juli.FileHandler.level = FINE
    • java.util.logging.ConsoleHandler.level = WARNING
  • 应用业务包日志:为你的应用包单独设级,便于排错
    • com.yourapp.level = DEBUG
    • com.yourapp.handlers = java.util.logging.ConsoleHandler
  • 修改后重启 Tomcat 生效。

五 集中化与清理策略

  • 集中化:通过 rsyslog 将 Tomcat 日志发往远程 Syslog 服务器(在 rsyslog 配置中写入相应规则并重启 rsyslog),便于统一采集与审计。
  • 自动清理:除 logrotate 的 rotate 7 + compress 外,也可编写清理脚本定期删除 N 天前日志,例如:
    • find /usr/local/tomcat/logs -name “catalina.out.*” -mtime +7 -delete
    • 配合 crontab 每天 2 点执行,控制磁盘占用。

0