Tomcat采用Java Util Logging (JUL) 作为默认日志框架,日志级别从低到高分为:FINEST(最详细,含变量值、方法调用栈)、FINER(较详细,含线程信息)、FINE(调试信息,适合开发)、CONFIG(配置信息,如属性加载)、INFO(常规运行信息,如启动/关闭)、WARNING(潜在问题,如资源不足)、SEVERE(严重错误,如应用崩溃)。级别越高,记录的信息越少,对性能影响越小;级别越低,记录的信息越详细,对性能影响越大。
生产环境需优先保证性能稳定和快速故障排查,推荐以下配置:
java.sql.ConnectionPool):设置为WARNING(记录连接获取失败、超时等关键问题,避免泄露敏感SQL)。开发测试环境需详细追踪问题,推荐以下配置:
org.apache.catalina.servlets.DefaultServlet):设置为WARNING(避免记录过多静态文件访问日志,干扰调试)。logging.properties文件logging.properties是Tomcat日志配置的核心文件,位于${CATALINA_BASE}/conf目录(如/opt/tomcat/conf/logging.properties)。
.level属性(根logger),例如:.level = INFO。模块名.level设置特定模块的级别,例如:org.apache.catalina.level = WARNING
org.apache.catalina.core.ContainerBase.level = WARNING
java.sql.ConnectionPool.level = WARNING
处理器名.level设置日志输出目标(如控制台、文件)的级别,例如:java.util.logging.ConsoleHandler.level = INFO
1catalina.org.apache.juli.FileHandler.level = WARNING
保存文件后,重启Tomcat使配置生效。若无需修改配置文件,可通过JVM参数临时设置全局日志级别,例如:
export JAVA_OPTS="-Djava.util.logging.ConsoleHandler.level=INFO"
./startup.sh
此方式仅对当前启动有效,重启后失效。
若需更强大的日志功能(如异步日志、远程收集),可集成Log4j或SLF4J,步骤如下:
log4j-api、log4j-core、log4j-jul等jar包放入${CATALINA_HOME}/lib。log4j2.xml:在conf目录下创建配置文件,定义日志级别、输出格式、滚动策略等。logging.properties中设置.level = OFF,避免与Log4j冲突。FINEST或FINER,否则会导致磁盘空间快速耗尽(如每秒记录数千条日志)。logrotate工具(Linux)或脚本定期压缩、删除旧日志,例如每天轮转catalina.out,保留30天。WARNING时,需排查潜在问题)。