Ubuntu下Tomcat日志级别设置建议
Tomcat的日志级别通过conf/logging.properties文件配置,需根据环境调整全局及特定组件的日志级别:
.level参数,生产环境推荐INFO(记录一般运行信息,避免过多调试日志),开发环境可设为FINE(记录详细调试信息)。org.apache.catalina.core.ContainerBase.[Catalina].level = INFO # Catalina容器主日志
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE # 本地主机上下文日志(如应用部署)
org.apache.catalina.authenticator.level = WARNING # 认证模块(仅记录警告/错误)
org.apache.coyote.level = WARNING # HTTP连接器(如请求处理错误)
com.yourapp),并指定处理器:com.yourapp.level = INFO # 应用包日志级别
com.yourapp.handlers = java.util.logging.ConsoleHandler # 输出到控制台
以上配置需重启Tomcat生效。通过conf/server.xml中的AccessLogValve记录访问日志,需开启轮转并设置保留策略:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %{Referer}i %{User-Agent}i" # 包含IP、请求、状态码、Referer等信息
rotatable="true"
maxDays="30" /> # 日志保留30天,自动删除旧日志
pattern:可根据需求调整(如common仅记录基本信息,combined包含Referer和User-Agent);maxDays:控制日志保留天数,避免磁盘空间占用。使用logrotate自动轮转Tomcat日志(如catalina.out、访问日志),避免单个文件过大:
/etc/logrotate.d/tomcat配置文件:/usr/local/tomcat/logs/catalina.out {
daily # 每天轮转
rotate 30 # 保留30个归档文件
compress # 压缩旧日志(节省空间)
missingok # 若日志不存在也不报错
notifempty # 若日志为空则不轮转
copytruncate # 复制日志后清空原文件(不影响Tomcat运行)
dateext # 归档文件带日期(如catalina.out-2025-10-01.gz)
}
此配置会自动处理Tomcat日志的轮转和清理。从Tomcat 8开始,可使用异步日志(AsyncFileHandler)减少日志写入对主线程的影响,提升性能:
修改logging.properties,将默认的ConsoleHandler替换为AsyncFileHandler:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.AsyncFileHandler.level = INFO
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
异步日志适合高并发场景,能显著降低日志IO对应用性能的影响。
server.xml中注释AccessLogValve配置;org.apache.tomcat.util.scan.StandardJarScanFilter(Jar扫描),可设为WARNING减少冗余日志:org.apache.tomcat.util.scan.StandardJarScanFilter.level = WARNING
logs目录下日志文件是否符合预期(如级别调整后,DEBUG日志不再出现)。