在Ubuntu系统中,Tomcat的日志是排查应用故障的核心线索。以下是系统化的异常查找流程,涵盖日志定位、基础查看、精准过滤、堆栈分析及工具辅助等步骤:
Tomcat的日志默认存储在/var/log/tomcatX
目录(X
为Tomcat版本号,如tomcat9
)或/opt/tomcat/logs
(源码安装路径)。主要日志文件及作用:
localhost.2025-10-13.log
):记录本地主机相关的应用事件(如Servlet初始化、JSP编译);命令行是最常用的日志分析方式,适合快速定位问题:
tail -f
命令实时监控日志文件的新增内容(如tail -f /var/log/tomcat9/catalina.out
),便于及时发现线上异常;grep
命令筛选包含“ERROR”“Exception”“Failed”等关键字的日志行(如grep -i "ERROR" /var/log/tomcat9/catalina.out
),快速缩小问题范围;NullPointerException
),用grep -A2 -B2
显示匹配行的前后2行(如grep -A2 -B2 "java.lang.NullPointerException" catalina.out
),获取完整的调用链信息;awk
统计特定错误的出现频率(如awk '/ERROR/ {count++} END {print count}' catalina.out
),判断问题的严重程度;sed
命令提取指定时间范围的日志(如sed -n '/2025-10-13 10:00:00/,/2025-10-13 10:05:00/p' catalina.out
),关联异常与具体操作。异常堆栈是定位问题根源的核心,需重点关注以下信息:
Caused by
行通常指向问题的本质(如Caused by: java.sql.SQLException: Table 'mydb.nonexistent_table' doesn't exist
,表明数据库表不存在);... 20 more
表示省略了部分调用栈,无需关注,重点分析前5-10行的关键调用链;2025-10-13 10:30:01.123
)可将异常与部署、配置修改等操作关联,快速定位触发时间。对于大型日志文件或长期运行的Tomcat实例,可使用工具简化分析流程:
ERROR
关键字,通过邮件或短信发送警报(示例代码见搜索结果)。根据日志中的异常类型,可快速定位问题根源:
-Xmx
参数,如-Xmx1024m
),使用jmap
生成堆转储文件,通过VisualVM分析内存泄漏;@WebServlet
注解配置是否正确;WEB-INF/lib
目录下是否存在所需JAR包,避免版本冲突。通过以上步骤,可系统性地从Tomcat日志中查找并分析异常,快速定位问题根源。需注意的是,结合时间戳、堆栈上下文及业务操作是精准排查的关键。