Tomcat在CentOS上的日志默认存储在$TOMCAT_HOME/logs目录($TOMCAT_HOME通常为Tomcat安装路径,如/usr/local/tomcat或/opt/tomcat)。主要错误日志文件包括:
通过命令行工具快速定位错误信息:
tail -f /path/to/tomcat/logs/catalina.out,可实时监控日志新增内容(按Ctrl+C停止);grep命令筛选关键错误,如grep "ERROR" catalina.out(显示所有包含“ERROR”的行)、tail -f catalina.out | grep "OutOfMemoryError"(实时监控内存溢出错误);tail -n 50 catalina.out显示日志文件最后50行(适用于快速查看近期错误);sed命令(如sed -n "/2025-09-20 10:00/,/2025-09-20 11:00/p" catalina.out > /tmp/error_segment.log,提取2025-09-20 10:00至11:00的日志)。通过日志中的关键字和堆栈跟踪快速识别问题根源:
java.lang.OutOfMemoryError: Java heap space(堆内存不足)、java.lang.OutOfMemoryError: PermGen space(永久代内存不足,Java 7及以下);catalina.sh(Linux)或catalina.bat(Windows)中设置-Xms(初始堆大小)和-Xmx(最大堆大小),如-Xms512m -Xmx1024m(初始512MB,最大1GB);若为永久代溢出,添加-XX:MaxPermSize=256m(Java 7)或-XX:MaxMetaspaceSize=256m(Java 8及以上)。Address already in use(端口已被占用);netstat -tuln | grep 端口号(如netstat -tuln | grep 8080)查找占用端口的进程,再用kill -9 进程ID终止该进程;或修改Tomcat的server.xml文件(<Connector port="8080">)更换端口。java.lang.ClassNotFoundException: com.example.MyClass(找不到指定类);WEB-INF/lib目录是否包含所需JAR包,或确认CLASSPATH环境变量配置正确(避免遗漏依赖库)。com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure(数据库连接中断);systemctl status mysql)、网络连接是否正常(ping 数据库IP)、数据库URL/用户名/密码是否正确(jdbc:mysql://localhost:3306/dbname)。404 Not Found(请求资源不存在)、500 Internal Server Error(服务器内部错误);webapps目录下是否存在对应应用);500错误需查看localhost.log中的堆栈跟踪,定位代码中的异常(如空指针、SQL语法错误)。logrotate工具自动切割日志(防止日志文件过大),可通过编辑/etc/logrotate.d/tomcat配置文件调整策略(如每天轮转、保留7个备份、压缩旧日志),避免日志占满磁盘空间。conf/logging.properties文件(如将根日志级别从INFO改为WARN,减少常规信息输出;或将为特定组件(如org.apache.catalina)设置为DEBUG,获取更详细的调试信息)。通过以上步骤,可系统性地分析Tomcat在CentOS上的错误日志,快速定位并解决问题。需注意的是,分析日志时应结合错误上下文(如错误发生时间、关联的请求URL、应用模块),并结合代码和配置文件进一步验证,确保问题彻底解决。