日志优化是提升Tomcat部署性能、减少存储消耗及简化运维的关键环节。以下是针对Ubuntu环境下Tomcat日志优化的具体方法,涵盖日志级别调整、轮转管理、访问日志配置等多个维度:
Tomcat的日志级别决定了日志的详细程度,默认的INFO
级别会记录大量常规信息(如组件启动、请求处理细节),增加磁盘占用。可通过修改conf/logging.properties
文件,将非关键组件的日志级别调整为WARNING
或ERROR
(仅记录错误和警告信息)。例如:
# 降低Catalina核心组件的日志级别 org.apache.catalina.level = WARNING org.apache.catalina.startup.level = WARNING # 降低JDBC驱动的日志级别(若无需详细SQL调试) java.sql.level = WARNING
修改后需重启Tomcat使配置生效。
日志文件无限增长会导致磁盘空间耗尽,需通过Logrotate(Ubuntu自带工具)实现自动轮转、压缩及删除旧日志。创建或修改/etc/logrotate.d/tomcat
文件,添加以下配置:
/var/log/tomcat/*.log { daily # 每日轮转 rotate 7 # 保留最近7天日志 compress # 压缩旧日志(节省空间) missingok # 若日志不存在也不报错 notifempty # 若日志为空则不轮转 create 0644 tomcat tomcat # 创建新日志文件并设置权限 sharedscripts # 所有日志轮转完成后执行脚本 postrotate /usr/bin/kill -USR1 `cat /var/run/tomcat.pid` 2>/dev/null || true endscript }
此配置会自动处理/var/log/tomcat/
目录下的所有.log
文件。
Tomcat的访问日志(AccessLogValve
)默认记录所有请求详情(如IP、URL、响应时间),若无需详细分析访问情况,可关闭访问日志或在server.xml
中配置轮转。修改conf/server.xml
文件:
<!-- 注释掉AccessLogValve配置(完全关闭访问日志) --> <!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" rotatable="true" maxDays="30" pattern="%h %l %u %t "%r" %s %b" /> -->
若需保留访问日志,可将rotatable
设为true
(启用轮转),并通过maxDays
设置日志保留天数(如maxDays="30"
保留30天)。
Tomcat 8及以上版本支持异步日志记录(AsyncFileHandler
),将日志写入操作放入单独线程,减少对主线程的影响(尤其在高并发场景下)。修改conf/logging.properties
文件,将ConsoleHandler
替换为AsyncFileHandler
:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
异步日志不会丢失日志信息,同时提升了Tomcat的整体吞吐量。
catalina.out
是Tomcat的标准输出日志(包含System.out
和System.err
内容),默认无轮转机制,易快速膨胀至GB级。可通过以下两种方式优化:
bin/catalina.sh
文件,找到CATALINA_OUT
变量定义,将其改为:if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT=/dev/null # 直接丢弃输出 fi
catalina.sh
,将CATALINA_OUT
改为带日期的文件名:if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE/logs/catalina.$(date +%Y-%m-%d).out" fi
此方式需配合Logrotate处理分割后的日志。对于生产环境,可通过ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog等工具,实现日志的集中收集、分析与可视化。这些工具能快速定位错误、统计访问趋势(如QPS、响应时间),大幅简化日志运维工作。
通过以上方法,可有效优化Ubuntu下Tomcat的日志记录,平衡日志的实用性与系统性能。需根据实际场景调整配置(如开发环境可保留DEBUG
级别,生产环境建议使用WARNING
或ERROR
),并在修改后充分测试验证效果。