Ubuntu 上 Tomcat 日志配置实操指南
一 配置文件与日志位置
- 配置文件位置
- 系统包安装(如 Tomcat 9):配置文件在 /etc/tomcat9/,主要编辑 server.xml 与 logging.properties。
- 手动安装(解压版):配置文件在 $CATALINA_HOME/conf/,同样修改 server.xml 与 logging.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:日志格式;常用有 common 与 combined,也可自定义(如记录 Referer、User-Agent)。
- rotatable 与 maxDays:按日期轮转与保留天数(访问日志专用)。
三 配置运行日志级别与输出
- 编辑 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 阻塞,提高性能。
四 日志轮转与清理
- 访问日志轮转
- 使用 AccessLogValve 的 rotatable=“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.xml 中 AccessLogValve 已启用且 directory/prefix/suffix/pattern 正确。
- 确认 logging.properties 中处理器与级别生效,且日志目录可写。
- 若使用 logrotate,检查 /var/log/tomcat/catalina.out 的轮转是否按日进行。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1461300.html