一、定位Tomcat日志文件
Tomcat的日志文件默认存储在$CATALINA_HOME/logs
目录($CATALINA_HOME
为Tomcat安装目录),常见日志文件及作用如下:
server.xml
文件查找AccessLogValve
标签的directory
(日志目录)和prefix
(日志前缀)属性确认。二、基础日志查看与过滤
tail -f
命令监控日志文件的实时更新(如tail -f /opt/tomcat/logs/catalina.out
),按Ctrl+C
停止;less
命令分页浏览日志(如less /opt/tomcat/logs/catalina.out
),支持上下翻页(Page Up/Page Down
)及关键词搜索(/keyword
);grep
命令筛选特定日志(如grep "ERROR" catalina.out
筛选错误日志,grep "404" access_log.txt
筛选404请求);awk
提取特定列(如awk '{print $1, $2}' catalina.out
提取时间戳和日志级别);awk
统计错误数量(如awk '/ERROR/ {count++} END {print "ERROR总数:", count}' catalina.out
);awk
分析访问频率(如grep "HTTP/1.1" access_log.txt | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
统计Top 10访问IP);sed
替换文本(如sed 's/error/warning/g' catalina.out
将日志中的“error”替换为“warning”)。三、使用日志分析工具
catalina.out
、access_log.txt
),进行过滤、解析(如提取时间戳、状态码);GELF
或Syslog
协议接收Tomcat日志。四、日志轮转与维护
为避免日志文件过大占用磁盘空间,需定期轮转日志。Linux系统自带logrotate
工具,配置步骤如下:
/etc/logrotate.d/tomcat
文件,添加以下内容(以/opt/tomcat/logs/*.log
为例):/opt/tomcat/logs/*.log {
daily # 每天轮转
missingok # 若日志不存在也不报错
rotate 7 # 保留7个历史日志
compress # 压缩旧日志(如.gz格式)
notifempty # 若日志为空则不轮转
create 640 tomcat tomcat # 创建新日志的权限及所有者
}
logrotate -vf /etc/logrotate.d/tomcat
。五、常见日志分析场景
grep "ERROR" catalina.out
筛选错误日志,结合awk
提取错误详情(如grep "ERROR" catalina.out | awk -F ':' '{print $1, $2, $NF}'
提取时间、日志级别、错误信息);awk
分析access_log.txt
,统计访问量(grep "HTTP/1.1" access_log.txt | wc -l
)、状态码分布(grep "HTTP/1.1" access_log.txt | awk '{print $9}' | sort | uniq -c
)、Top 10慢请求(需日志包含响应时间,如awk '$9 > 1000 {print $1, $7, $9}' access_log.txt | sort -nr | head -n 10
);-Xloggc:/opt/tomcat/logs/gc.log
),用awk
分析GC频率(grep "GC" gc.log | wc -l
)及耗时(grep "GC" gc.log | awk '{sum += $NF; count++} END {print "平均GC时间:", sum/count}'
)。