在Ubuntu系统上,Tomcat日志保留策略可通过日志轮转(控制日志文件数量与保留时间)、日志级别调整(减少不必要的日志输出)等方式实现。以下是具体方法:
logging.properties配置日志滚动与保留(JULI日志系统)Tomcat默认使用Java Util Logging(JULI)系统,其配置文件位于$CATALINA_BASE/conf/logging.properties(如/opt/tomcat/conf/logging.properties)。通过修改以下参数可实现日志滚动与保留:
java.util.logging.FileHandler.limit:单个日志文件的最大大小(单位:字节),超过则滚动创建新文件。例如,设置为10MB:java.util.logging.FileHandler.limit = 10485760 # 10MB
java.util.logging.FileHandler.count:保留的旧日志文件数量。例如,保留5个旧文件:java.util.logging.FileHandler.count = 5
java.util.logging.FileHandler.pattern:日志文件命名模式,支持%g(滚动序号)。例如:java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.out
*.maxDays(可选):部分日志处理器支持直接设置日志保留天数(如catalina.org.apache.juli.AsyncFileHandler.maxDays),但需注意并非所有版本都支持。生效步骤:修改后保存文件,重启Tomcat使配置生效:
./bin/shutdown.sh && ./bin/startup.sh
此方法适用于JULI日志系统,若使用Log4j等第三方日志框架,需参考对应文档配置。
logrotate工具自动化管理日志(推荐)logrotate是Linux系统自带的日志管理工具,可自动完成日志轮转、压缩、删除等操作,无需重启Tomcat。
sudo apt-get install logrotate
/etc/logrotate.d/目录下创建tomcat文件,内容如下(以catalina.out为例):/opt/tomcat/logs/catalina.out {
daily # 每天轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志(如catalina.out.1.gz)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
copytruncate # 复制原日志后清空,避免重启Tomcat
}
sudo logrotate -d /etc/logrotate.d/tomcat
sudo logrotate -f /etc/logrotate.d/tomcat
logrotate会自动按/etc/cron.daily/logrotate的定时任务(每天执行)管理日志,无需额外配置。
Tomcat的访问日志(记录HTTP请求)需通过server.xml文件配置,同样支持轮转与保留。
server.xml:<Host>标签,添加或修改AccessLogValve配置:<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
rotatable="true" # 启用轮转
maxDays="30" # 保留30天日志
pattern="%h %l %u %t "%r" %s %b" />
rotatable="true":启用日志轮转;maxDays="30":保留30天日志(需Tomcat 8.5+版本支持)。通过调整日志级别,可减少Tomcat输出的日志数量,间接降低日志文件大小。
logging.properties:org.apache.catalina),将级别从INFO调整为WARNING或ERROR(级别越高,输出越少):org.apache.catalina.level = WARNING
org.apache.catalina.startup.level = WARNING
logrotate:相比手动脚本,logrotate更稳定且集成于系统,推荐作为主要管理方式;logging.properties、server.xml),避免配置错误导致Tomcat无法启动。