日志优化是提升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),并在修改后充分测试验证效果。