Tomcat的日志文件默认存储在$CATALINA_HOME/logs
目录下($CATALINA_HOME
为Tomcat安装目录),常见日志文件及作用如下:
find / -name "*.log" -type f
命令全局查找日志文件,或检查$CATALINA_HOME/conf/server.xml
(日志配置路径)和$CATALINA_HOME/conf/logging.properties
(日志级别、格式配置)确认日志位置。tail -f
命令监控日志文件的实时更新(如tail -f /opt/tomcat/logs/catalina.out
),按Ctrl+C
停止;less
(支持上下翻页、搜索)或more
(逐页查看)命令(如less /opt/tomcat/logs/catalina.out
);grep
命令筛选关键字(如错误信息tail -f catalina.out | grep "ERROR"
、特定IPgrep "192.168.1.100" access_log.txt
);awk
提取日志中的关键字段(如从访问日志中提取IP和URL:awk '{print $1, $7}' access_log.txt
);sed
命令提取指定时间范围的日志(如sed -n '/2025-09-22 14:00:00/,/2025-09-22 15:00:00/p' catalina.out
)。grep -i "ERROR\|WARN" catalina.out
过滤错误和警告信息,结合堆栈跟踪(Stack Trace)定位问题根源(如java.lang.NullPointerException
、数据库连接超报错);awk
统计访问量(awk '{print $1}' access_log.txt | sort | uniq -c | sort -nr
)、热门URL(awk '{print $7}' access_log.txt | sort | uniq -c | sort -nr
)、响应状态码分布(awk '{print $9}' access_log.txt | sort | uniq -c
);awk '{print $10}' access_log.txt | grep -v "-" | awk '{sum+=$1; count++} END {print "Average Time: " sum/count "ms"}'
),或通过GC日志(需开启-Xloggc
参数)分析垃圾回收频率和时间。input
(读取Tomcat日志文件)、filter
(解析日志格式,如grok解析访问日志)和output
(发送至Elasticsearch);index=tomcat sourcetype=access* status=500
)、报表(如Top 10错误请求)和实时监控功能。logrotate
工具自动压缩、删除旧日志,避免日志文件过大占用磁盘空间。示例配置(/etc/logrotate.d/tomcat
):/opt/tomcat/logs/*.log { daily rotate 7 compress delaycompress missingok notifempty create 640 tomcat tomcat postrotate /bin/kill -HUP `cat /opt/tomcat/logs/catalina.pid 2>/dev/null` 2>/dev/null || true endscript }
该配置表示每日轮转日志,保留7天压缩日志,轮转后重新加载Tomcat(避免日志丢失);tomcat
)对日志目录有读写权限(chown -R tomcat:tomcat /opt/tomcat/logs/
,chmod 755 /opt/tomcat/logs/
);