Tomcat日志异常信息处理指南
Tomcat的日志文件集中存储在<Tomcat安装目录>/logs目录下(Windows路径如C:\Program Files\Apache Software Foundation\Tomcat\logs),常见文件及作用如下:
tail -f <日志文件路径>命令(如tail -f /var/log/tomcat/catalina.out),实时显示日志文件的最新内容,便于捕捉正在发生的异常。grep命令筛选特定关键字(如ERROR、Exception),缩小排查范围。例如:grep 'ERROR' /var/log/tomcat/catalina.out(显示所有错误级别日志)、grep 'java.lang.NullPointerException' /var/log/tomcat/catalina.out(筛选空指针异常)。less或more命令分页查看大型日志文件(如less /var/log/tomcat/catalina.out);若需查看特定时间段的日志,可通过sed命令提取(如sed -n '/2025-09-28 10:00:00/,/2025-09-28 10:05:00/p' /var/log/tomcat/catalina.out)。java.lang.OutOfMemoryError: Java heap space(堆内存不足)、java.lang.OutOfMemoryError: Metaspace(元空间不足)等。<Tomcat安装目录>/bin/catalina.sh(Linux/Mac)或catalina.bat(Windows)中的-Xmx(最大堆内存)、-Xms(初始堆内存)参数(如-Xmx2048m表示最大堆内存2GB);-XX:+HeapDumpOnOutOfMemoryError参数生成内存快照(如heapdump.hprof),使用VisualVM、MAT(Memory Analyzer Tool)等工具分析内存占用,重点检查缓存未释放、长生命周期对象持有短生命周期对象引用等问题。java.lang.ClassNotFoundException: com.example.SomeClass或java.lang.NoClassDefFoundError: com/example/SomeClass。WEB-INF/lib目录下是否存在所需JAR包,且版本正确(避免版本冲突);shared/lib目录),需确保类加载器隔离(避免共享库与应用库冲突)。java.sql.SQLException: Cannot create PoolableConnectionFactory、Communications link failure等。systemctl status mysql);context.xml(全局)或web.xml(应用级)中的数据库URL、用户名、密码是否正确(如jdbc:mysql://localhost:3306/mydb);telnet <数据库IP> <端口>(如telnet 127.0.0.1 3306)测试数据库端口是否可达。javax.servlet.ServletException: Servlet.init() for servlet [MyServlet] threw exception。abstract;@WebServlet注解,确认urlPatterns(URL映射)正确(如@WebServlet("/myServlet"))。HTTP Status 404 – Not Found,日志中出现org.apache.catalina.connector.RequestDispatcherImpl.error相关记录。/myapp,则访问路径应为http://localhost:8080/myapp/index.jsp);localhost.<日期>.log中无部署错误),且所需资源(如JSP、静态文件)存在于webapps/<应用名>目录下。at com.example.MyServlet.doGet(MyServlet.java:50))。NullPointerException)和堆栈信息,判断是代码逻辑错误(如未初始化对象)、配置问题(如数据库连接串错误)还是环境问题(如JVM内存不足)。if (obj != null)判空)、调整配置(如修正数据库URL)或优化环境(如增加JVM内存)。shutdown.sh/startup.sh或shutdown.bat/startup.bat),继续监控日志(如使用tail -f),确保无新异常产生;若异常复发,重复上述流程。ERROR级别日志的数量和趋势,快速定位高频异常。