温馨提示×

Debian系统Tomcat如何进行日志管理

小樊
57
2026-01-11 08:15:30
栏目: 智能运维

Debian系统Tomcat日志管理

一 日志类型与存放路径

  • 日志默认位于 $CATALINA_BASE/logs,常见文件与作用如下:
    • catalina.out:标准输出与错误输出(常被应用 System.out/err 写入),默认不自动切割,需要借助外部轮转。
    • catalina.YYYY-MM-DD.log:Tomcat 启动、关闭等运行日志。
    • localhost.YYYY-MM-DD.log:应用初始化(Listener/Filter/Servlet)未处理异常等。
    • localhost_access_log.YYYY-MM-DD.txt:访问日志,记录 IP、时间、请求、状态码 等。
    • manager.YYYY-MM-DD.log / host-manager.YYYY-MM-DD.log:管理应用日志。
  • 日志级别(从低到高):FINEST < FINER < FINE < CONFIG < INFO < WARNING < SEVERE。以上文件与级别含义为 Tomcat 常规约定,便于定位与调优。

二 日志轮转与清理

  • 使用系统 logrotate 管理(推荐)
    • 新建配置:/etc/logrotate.d/tomcat
      /opt/tomcat/logs/catalina.out {
          daily
          missingok
          rotate 7
          compress
          notifempty
          copytruncate
      }
      /opt/tomcat/logs/*.log {
          daily
          missingok
          rotate 30
          compress
          notifempty
          create 640 tomcat adm
      }
      
    • 说明:
      • catalina.out 使用 copytruncate 更安全(避免重启/信号影响正在写入的进程)。
      • 对按日期切分的 .log 文件使用 create 让 logrotate 重新创建新文件并设定属主属组。
      • 测试与生效:sudo logrotate -f /etc/logrotate.d/tomcat;logrotate 通常由 cron 的 daily 任务自动执行。
  • 其他可选方案
    • conf/server.xml 中为 AccessLogValve 设置 rotatable=“true”filedateformat,让访问日志按日期自动滚动。
    • 使用 cronolog 等工具对 catalina.out 进行按时间分割(适合老旧或非 systemd 场景)。

三 日志级别与格式配置

  • 配置文件:$CATALINA_BASE/conf/logging.properties
    • 调整包/类的日志级别(示例将 Catalina 提升到 FINE):
      1catalina.org.apache.juli.AsyncFileHandler.level = FINE
      2localhost.org.apache.juli.AsyncFileHandler.level = INFO
      org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
      
    • 自定义控制台输出格式(单行更易检索):
      java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
      
    • 常见可用属性(以 AsyncFileHandler 为例):directory、prefix、suffix、encoding、maxDays(保留天数)。修改后需重启 Tomcat 生效。

四 访问日志配置

  • conf/server.xmlEngine/Host 内配置 AccessLogValve,示例:
    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="logs"
           prefix="access_log"
           suffix=".txt"
           pattern="common"
           rotatable="true"
           filedateformat="yyyy-MM-dd.HH"/>
    
  • 常用 pattern
    • common%h %l %u %t "%r" %s %b
    • combined:在 common 基础上增加 RefererUser-Agent
  • 说明:AccessLogValve 生成的访问日志天然按日期滚动(配合 rotatablefiledateformat),便于按天归档与检索。

五 查看分析与集中化

  • 常用查看方式
    • 实时查看:tail -f /opt/tomcat/logs/catalina.out
    • 关键字检索:grep -i "error" /opt/tomcat/logs/catalina.out
    • 统计与排查:结合 awk/sed 做字段提取与聚合分析。
  • 集中化与告警
    • 将日志接入 ELK Stack(Elasticsearch/Logstash/Kibana)Graylog,实现统一存储、检索、可视化与告警(适合多实例与多环境)。

0