Tomcat的日志文件集中存储在<Tomcat安装目录>/logs目录下,核心日志文件及作用如下:
AccessLogValve),记录请求URL、状态码、响应时间等信息,用于排查请求层面的问题。使用命令行工具快速定位日志中的错误条目,提升排查效率:
tail -f catalina.out命令实时监控日志文件的新增内容,及时捕捉正在发生的错误;grep "ERROR" catalina.out命令筛选出所有ERROR级别的日志条目,聚焦严重问题;grep "ERROR.*数据库" catalina.out),进一步缩小范围。根据筛选出的错误日志,重点关注以下信息以定位配置错误的根本原因:
SEVERE(致命错误,如服务器无法启动)、ERROR(严重错误,如配置无效)级别的日志,明确问题的严重性;org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)),定位具体出错的配置类或组件;server.xml、context.xml、web.xml等配置文件(如java.net.BindException: Address already in use对应server.xml中的端口配置),直接检查对应文件的配置项。Tomcat提供的configtest命令可快速检查配置文件的语法正确性,避免因配置格式错误导致的启动失败:
bin目录下执行./configtest.sh;bin目录下执行configtest.bat。OK,说明配置文件无语法错误;若提示具体错误(如org.xml.sax.SAXParseException: The element type "Connector" must be terminated by the matching end-tag "</Connector>"),需根据提示修正对应配置文件的标签或属性。结合日志中的错误信息,快速匹配常见配置问题并采取对应措施:
java.net.BindException: Address already in use,需修改server.xml中的<Connector>端口(如将8080改为8081),并通过netstat -an | grep <端口号>确认端口是否释放;ClassNotFoundException或NoClassDefFoundError,需检查WEB-INF/lib目录是否包含所需依赖JAR包,或CLASSPATH环境变量是否配置正确;java.lang.OutOfMemoryError: Java heap space,需调整catalina.sh(Linux/macOS)或catalina.bat(Windows)中的JVM参数(如-Xms512m -Xmx1024m,分别设置初始堆内存和最大堆内存);javax.net.ssl.SSLHandshakeException,需检查server.xml中的<Connector> SSL证书路径(如keystoreFile、truststoreFile)及密码是否正确。通过调整日志级别和格式,获取更详细的配置错误信息:
conf/logging.properties文件,将特定组件的日志级别调整为FINE或FINER(如org.apache.catalina.core.StandardContext.level = FINE),记录更详细的配置加载过程;logging.properties中修改ConsoleHandler或FileHandler的formatter属性(如java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s%n),添加时间戳、日志级别等信息,便于快速定位日志时间点;logging.properties中的.level属性设置为FINE,记录所有组件的调试信息(生产环境需谨慎使用,避免日志量过大)。