如何在Ubuntu上分析Tomcat日志
Tomcat的日志文件默认存储在/var/log/tomcatX/目录下(X为Tomcat主版本号,如Tomcat 9对应/var/log/tomcat9/)。主要日志文件包括:
server.xml中的AccessLogValve标签确认(directory属性指定目录,prefix属性指定前缀)。使用tail -f命令实时跟踪日志文件的新增内容(如监控catalina.out):
sudo tail -f /var/log/tomcat9/catalina.out
按Ctrl+C退出实时监控。
grep命令筛选ERROR关键字(不区分大小写):sudo grep -i "ERROR" /var/log/tomcat9/catalina.out
awk提取访问日志的时间戳(第4列),排序并统计频次:sudo awk '{print $4}' /var/log/tomcat9/access_log | cut -d: -f1 | sort | uniq -c | sort -nr
grep筛选用户名(如user123):sudo grep "user123" /var/log/tomcat9/access_log
sed命令截取指定时间范围(如2025-09-18 10:00至10:05):sed -n '/2025-09-18 10:00:00/,/2025-09-18 10:05:00/p' /var/log/tomcat9/catalina.out
编写Shell脚本自动化处理常见分析任务(如提取ERROR日志并统计):
#!/bin/bash
# 设置Tomcat日志路径
TOMCAT_LOG_PATH="/var/log/tomcat9/catalina.out"
# 检查日志文件是否存在
if [ ! -f "$TOMCAT_LOG_PATH" ]; then
echo "Tomcat log file not found at $TOMCAT_LOG_PATH"
exit 1
fi
# 分析错误日志(统计频次并排序)
echo "Analyzing Tomcat logs for errors..."
grep -i "ERROR" "$TOMCAT_LOG_PATH" | awk '{print $1, $2, $3, $4, $5}' | sort | uniq -c | sort -nr
# 可扩展:查找内存溢出错误
# grep "OutOfMemoryError" "$TOMCAT_LOG_PATH"
# 查找SQLException
# grep "SQLException" "$TOMCAT_LOG_PATH"
echo "Analysis complete."
保存为analyze_tomcat_logs.sh,赋予执行权限后运行:
chmod +x analyze_tomcat_logs.sh
./analyze_tomcat_logs.sh
对于大规模或复杂的日志,推荐使用专业工具提升分析效率:
filebeat.yml收集Tomcat的catalina.out和访问日志;ERROR日志超过阈值时触发邮件通知)和报表生成。cronolog工具按日期分割catalina.out(避免单个文件过大),修改catalina.sh启动脚本:# 替换原启动命令(在catalina.sh中找到)
org.apache.catalina.startup.Bootstrap "$@" start \
>> /var/log/tomcat9/catalina.$(date +\%Y-\%m-\%d).out 2>&1 &
或安装cronolog后配置:sudo apt install cronolog
# 修改catalina.sh中的启动命令为:
org.apache.catalina.startup.Bootstrap "$@" start \
2>&1 | /usr/sbin/cronolog /var/log/tomcat9/catalina.%Y-%m-%d.out >> /dev/null &
conf/logging.properties文件,调整日志级别(如将org.apache.catalina级别设为FINE记录更详细信息):org.apache.catalina.level = FINE
日志级别从低到高依次为:FINEST<FINER<FINE<CONFIG<INFO<WARNING<SEVERE。通过以上步骤,可全面覆盖Ubuntu上Tomcat日志的分析需求,从基础查看、过滤到自动化处理及高级可视化,有效监控Tomcat运行状态并及时排查问题。