Tomcat的日志主要分为两类,其中访问日志(记录请求响应状态)和错误日志(记录错误详情)是识别HTTP状态码的关键:
<Tomcat安装目录>/logs/localhost_access_log.<日期>.txt,记录每个请求的详细信息,包括IP、时间、请求方法、URL、HTTP状态码、响应大小等。例如:192.168.1.100 - - [30/Sep/2025:10:00:00 +0800] "GET /index.html HTTP/1.1" 404 1024 "http://example.com" "Mozilla/5.0"404即为HTTP状态码。<Tomcat安装目录>/logs/catalina.out(或localhost.<日期>.log),记录服务器运行中的错误信息(如异常堆栈、未处理的错误)。例如:java.lang.NullPointerException: Cannot invoke "com.example.Service.process()" because "service" is null500(服务器内部错误)。HTTP状态码分为5类,其中**4xx(客户端错误)和5xx(服务器错误)**是需要重点关注的“错误状态码”:
400 Bad Request:请求语法错误(如参数格式不正确、Header缺失);401 Unauthorized:未授权访问(需登录但未提供有效凭证);403 Forbidden:禁止访问(权限不足,如未授权的角色);404 Not Found:请求的资源不存在(URL路径错误、资源未部署);405 Method Not Allowed:请求方法不被支持(如用POST访问只允许GET的接口)。500 Internal Server Error:服务器内部错误(如代码空指针、数据库连接失败);503 Service Unavailable:服务不可用(如Tomcat负载过高、线程池耗尽);502 Bad Gateway:网关错误(如反向代理后端服务器未响应);504 Gateway Timeout:网关超时(后端服务器响应时间过长)。通过grep、awk等命令行工具,可快速定位错误状态码:
grep ' 404 ' /path/to/tomcat/logs/localhost_access_log.2025-09-30.txtawk '{if ($9 >= 400 && $9 < 500) count4xx++; else if ($9 >= 500) count5xx++;} END {print "4xx errors: " count4xx "\n5xx errors: " count5xx}' /path/to/access.loggrep ' 500 ' /path/to/tomcat/logs/catalina.out查找对应的异常堆栈,定位代码问题。对于大型应用,手动分析日志效率低,可使用以下工具:
status=500)快速定位错误请求,关联上下文(如请求参数、用户信息)分析原因。web.xml中的Servlet映射配置。catalina.out中的异常堆栈(如NullPointerException、SQLException),定位代码bug;检查数据库连接池配置(如URL、用户名、密码是否正确)。web.xml中的<security-constraint>配置);确认用户角色是否有访问权限。server.xml中的<Connector>标签,如maxThreads参数);优化应用性能(如减少数据库查询时间);增加服务器资源(如内存、CPU)。