温馨提示×

如何配置Ubuntu Tomcat日志

小樊
39
2025-11-29 07:10:51
栏目: 智能运维

Ubuntu 上 Tomcat 日志配置实操指南

一 配置文件与日志位置

  • 配置文件位置
    • 系统包安装(如 Tomcat 9):配置文件在 /etc/tomcat9/,主要编辑 server.xmllogging.properties
    • 手动安装(解压版):配置文件在 $CATALINA_HOME/conf/,同样修改 server.xmllogging.properties
  • 日志默认目录
    • 常见为 $CATALINA_HOME/logs(手动安装)或 /var/log/tomcat/(系统包安装)。
  • 常见日志文件与作用
    • catalina.out:标准输出与错误输出(通常不自动切割)。
    • catalina.YYYY-MM-DD.log:启动、关闭与运行日志。
    • localhost.YYYY-MM-DD.log:应用初始化与未处理异常。
    • localhost_access_log.YYYY-MM-DD.txt:访问日志(由 AccessLogValve 生成)。
    • manager.YYYY-MM-DD.log / host-manager.YYYY-MM-DD.log:管理应用日志。

二 配置访问日志 AccessLogValve

  • 编辑 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 %{Referer}i %{User-Agent}i"
       resolveHosts="false"
       rotatable="true"
       maxDays="30"/>
  • 关键参数说明
    • directory:日志目录(相对 $CATALINA_BASE 或绝对路径)。
    • pattern:日志格式;常用有 commoncombined,也可自定义(如记录 RefererUser-Agent)。
    • rotatablemaxDays:按日期轮转与保留天数(访问日志专用)。

三 配置运行日志级别与输出

  • 编辑 conf/logging.properties,调整 JUL(java.util.logging) 的日志级别与处理器:
# 全局日志级别
.level = INFO

# 控制台输出(可选)
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

# 按组件设置更细粒度级别(示例)
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
org.apache.coyote.level = FINE
org.apache.tomcat.util.scan.StandardJarScanFilter.level = FINE

# 使用异步文件处理器提升性能(Tomcat 8+)
handlers = 1catalina.org.apache.juli.AsyncFileHandler, \
           2localhost.org.apache.juli.AsyncFileHandler, \
           3manager.org.apache.juli.AsyncFileHandler, \
           4host-manager.org.apache.juli.AsyncFileHandler, \
           java.util.logging.ConsoleHandler

1catalina.org.apache.juli.AsyncFileHandler.level = INFO
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.suffix = .log
1catalina.org.apache.juli.AsyncFileHandler.rotatable = true
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 30

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.suffix = .log
2localhost.org.apache.juli.AsyncFileHandler.rotatable = true
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 30
  • 提示
    • .level 设置为 WARNING/ERROR 可减少日志量;调试时可设为 FINE
    • 异步处理器(AsyncFileHandler)可降低 I/O 阻塞,提高性能。

四 日志轮转与清理

  • 访问日志轮转
    • 使用 AccessLogValverotatable=“true”maxDays=“30” 即可按日期切割并保留指定天数。
  • catalina.out 轮转(系统包安装推荐)
    • 创建 /etc/logrotate.d/tomcat,示例:
/var/log/tomcat/catalina.out {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 0644 tomcat tomcat
    postrotate
        /usr/bin/kill -USR1 `cat /var/run/tomcat.pid 2>/dev/null` || true
    endscript
}
  • 说明:daily 每天轮转、rotate 7 保留 7 份、compress 压缩、postrotate 发送 USR1 触发重新打开日志文件(需确保 Tomcat 以 tomcat 用户运行且 /var/run/tomcat.pid 存在)。
  • 清理旧日志脚本(可选)
    • 使用 find … -mtime +N 定期删除过期日志,作为补充策略。

五 验证与常用命令

  • 重启使配置生效
    • 系统包安装:sudo systemctl restart tomcat9
    • 手动安装:在 $CATALINA_HOME/bin 执行 ./shutdown.sh && ./startup.sh
  • 实时查看日志
    • 查看控制台输出:tail -f /var/log/tomcat/catalina.out
    • 查看访问日志:tail -f /var/log/tomcat/localhost_access_log.*.txt
    • 查看应用日志:tail -f /var/log/tomcat/localhost.*.log
  • 排查要点
    • 确认 server.xmlAccessLogValve 已启用且 directory/prefix/suffix/pattern 正确。
    • 确认 logging.properties 中处理器与级别生效,且日志目录可写。
    • 若使用 logrotate,检查 /var/log/tomcat/catalina.out 的轮转是否按日进行。

0