1. 实时查看日志文件
使用tail -f命令可实时监控Tomcat日志文件的最新内容,快速捕捉异常信息。例如,若Tomcat版本为10,日志路径通常为/var/log/tomcat10/catalina.out,执行tail -f /var/log/tomcat10/catalina.out即可实时显示新增日志;也可结合less或more命令分页查看历史日志,便于详细分析。
2. 过滤异常关键字
通过grep命令过滤日志中的异常关键字(如ERROR、Exception、SEVERE),快速定位问题条目。例如:
grep "ERROR" /var/log/tomcat10/catalina.out:提取所有包含“ERROR”的日志行;grep -i "exception" /var/log/tomcat10/catalina.out:忽略大小写查找“exception”;grep "SEVERE" /var/log/tomcat10/catalina.out:筛选严重级别日志(Tomcat默认日志级别中,SEVERE为最高)。3. 调整日志级别
修改Tomcat的logging.properties文件(位于conf目录),调整日志级别以控制日志输出的详细程度。日志级别从低到高依次为FINEST、FINER、FINE、CONFIG、INFO、WARNING、SEVERE,级别越高,输出的日志越精简。例如,将全局日志级别设置为WARNING,可减少不必要的INFO日志,突出显示警告和错误信息:
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler .level = WARNING 1catalina.org.apache.juli.FileHandler.level = WARNING java.util.logging.ConsoleHandler.level = WARNING 修改后需重启Tomcat使配置生效。
4. 使用命令行工具分析日志
结合grep、awk、sed等命令行工具对日志进行深度分析,例如统计错误数量、提取异常堆栈信息:
ERROR日志数量:grep -c "ERROR" /var/log/tomcat10/catalina.out;grep -A 10 "Exception" /var/log/tomcat10/catalina.out | grep -B 10 "at"(显示异常及后续10行堆栈);awk '/2025-09-23.*ERROR/{count++} END{print count}' /var/log/tomcat10/catalina.out(统计2025-09-23当天的ERROR数量)。5. 集成专业日志监控工具
使用ELK Stack(Elasticsearch+Logstash+Kibana)、Graylog或Splunk等工具,实现日志的集中收集、存储、分析与可视化:
catalina.out、localhost_access_log.*.txt),Logstash解析日志并发送至Elasticsearch,Kibana配置仪表盘展示错误日志趋势、异常类型分布,并设置告警规则(如ERROR日志数量超过10条/分钟时触发邮件通知);index=tomcat sourcetype=catalina "ERROR"。6. 配置日志轮转
使用logrotate工具自动轮转Tomcat日志,避免日志文件过大占用磁盘空间。编辑/etc/logrotate.d/tomcat10文件(若不存在则创建),添加以下配置:
/var/log/tomcat10/*.log { daily missingok rotate 7 compress delaycompress notifempty create 640 tomcat tomcat sharedscripts postrotate systemctl restart tomcat10 >/dev/null 2>&1 || true endscript } 配置说明:
daily:每日轮转一次;rotate 7:保留最近7天的日志;compress:压缩旧日志(如catalina.out.1.gz);postrotate:轮转后重启Tomcat,确保日志写入新文件。7. 自定义监控脚本
编写Shell脚本定期检查日志中的异常,并在检测到问题时触发告警(如发送邮件、重启Tomcat)。例如,以下脚本检查catalina.out中的ERROR日志,若数量超过5条则发送邮件通知:
#!/bin/bash LOG_FILE="/var/log/tomcat10/catalina.out" ERROR_COUNT=$(grep -c "ERROR" "$LOG_FILE") THRESHOLD=5 EMAIL="admin@example.com" if [ "$ERROR_COUNT" -gt "$THRESHOLD" ]; then echo "Tomcat日志中ERROR数量超过阈值:$ERROR_COUNT" | mail -s "Tomcat异常告警" "$EMAIL" # 可选:重启Tomcat(谨慎使用) # systemctl restart tomcat10 fi 将脚本保存为/usr/local/bin/monitor_tomcat.sh,添加执行权限(chmod +x /usr/local/bin/monitor_tomcat.sh),并通过cron定时运行(如每5分钟一次):
*/5 * * * * /usr/local/bin/monitor_tomcat.sh 8. JMX监控
开启Tomcat的JMX(Java Management Extensions)功能,通过JMX客户端(如JConsole、VisualVM)实时监控Tomcat的运行状态与异常信息。步骤如下:
catalina.sh(Linux)或catalina.bat(Windows)文件,添加JMX配置:export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" bin目录)连接localhost:1099,查看“MBeans”→“Tomcat”→“线程”“内存”“异常”等指标,实时监控异常情况。