Debian环境下Tomcat日志管理技巧
使用logrotate工具实现Tomcat日志的自动轮转、压缩和清理,避免单个日志文件过大占用磁盘空间。
/etc/logrotate.d/目录下新建tomcat文件(如sudo nano /etc/logrotate.d/tomcat)。/var/log/tomcat/*.log {
daily # 每天轮转一次
rotate 7 # 保留最近7个日志文件
compress # 压缩旧日志(节省空间)
missingok # 若日志不存在,不报错
notifempty # 若日志为空,不轮转
create 640 tomcat adm # 新日志文件权限(属主:tomcat,属组:adm)
sharedscripts # 多个日志文件匹配时,只执行一次postrotate
postrotate
if [ -f /var/run/tomcat.pid ]; then
/usr/share/tomcat/bin/shutdown.sh && /usr/share/tomcat/bin/startup.sh # 重启Tomcat以释放日志句柄
fi
endscript
}
sudo logrotate -d /etc/logrotate.d/tomcat(模拟运行,无实际修改)。sudo logrotate -f /etc/logrotate.d/tomcat(立即执行,适用于调试)。cron.daily任务会自动调用logrotate,无需额外设置定时任务。通过修改logging.properties文件,降低日志详细程度,减少日志文件大小。
$CATALINA_BASE/conf/logging.properties(如/var/lib/tomcat9/conf/logging.properties)。INFO改为WARNING(忽略INFO级别的冗余信息):.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.level = WARNING
org.apache.catalina)调整级别:org.apache.catalina.level = WARNING
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter # 单行输出,便于阅读
通过server.xml配置访问日志,记录所有访问Tomcat的HTTP请求(如IP、方法、路径、状态码),便于后续分析流量和排查问题。
$CATALINA_BASE/conf/server.xml(如/var/lib/tomcat9/conf/server.xml)。<Host>标签内):<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %T"
resolveHosts="false"/>
directory:日志存储目录(相对于$CATALINA_BASE)。prefix:日志文件前缀(如localhost_access_log)。suffix:日志文件后缀(如.txt)。pattern:日志格式(%h=客户端IP,%r=请求行,%s=状态码,%b=发送字节数,%T=请求处理时间)。当磁盘空间紧张时,可通过以下命令快速清理旧日志(需谨慎操作,避免误删)。
sudo find /var/log/tomcat -type f -name "catalina.*.log" -mtime +30 -exec rm -f {} \;
sudo find /var/log/tomcat -type f -name "localhost.*.log" -mtime +30 -exec rm -f {} \;
sudo find /var/log/tomcat -type f -name "localhost_access_log.*.txt" -mtime +30 -exec rm -f {} \;
sudo nano /usr/local/bin/clean_tomcat_logs.sh
内容如下:#!/bin/bash
LOG_DIR="/var/log/tomcat"
find "$LOG_DIR" -type f -name "catalina.*.log" -mtime +30 -exec rm -f {} \;
find "$LOG_DIR" -type f -name "localhost.*.log" -mtime +30 -exec rm -f {} \;
find "$LOG_DIR" -type f -name "localhost_access_log.*.txt" -mtime +30 -exec rm -f {} \;
赋予执行权限:sudo chmod +x /usr/local/bin/clean_tomcat_logs.sh。借助专业工具对Tomcat日志进行分析,快速定位性能瓶颈、异常请求或安全威胁。
access_log和catalina.out),Elasticsearch存储并索引,Kibana可视化展示(如请求量趋势、错误率统计)。ERROR关键字时发送邮件通知)。tail -f /var/log/tomcat/catalina.out。grep "ERROR" /var/log/tomcat/catalina.out。grep "ERROR" /var/log/tomcat/catalina.out | wc -l。