1. 使用Logrotate进行自动化日志轮转与压缩
Logrotate是Ubuntu系统自带的日志管理工具,可自动处理Tomcat日志的轮转、压缩、删除及进程通知。配置步骤如下:
sudo apt-get install logrotate。sudo vim /etc/logrotate.d/tomcat,添加以下内容:/var/log/tomcat/*.log { # 匹配Tomcat日志目录下的所有.log文件
daily # 按天轮转(可改为weekly/monthly)
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(节省空间)
missingok # 若日志文件不存在,不报错
notifempty # 若日志为空,不轮转
create 640 tomcat tomcat # 新日志文件的权限与所有者(需与Tomcat运行用户一致)
sharedscripts # 所有日志处理完成后统一执行postrotate
postrotate # 轮转后执行的命令(通知Tomcat重新打开日志文件)
/bin/kill -USR1 $(cat /var/run/tomcat.pid) 2>/dev/null || true
endscript
}
sudo logrotate -d /etc/logrotate.d/tomcat(模拟运行,不实际修改文件)。sudo logrotate -f /etc/logrotate.d/tomcat。2. 配置Tomcat原生日志轮转(可选补充)
若不想依赖Logrotate,可通过Tomcat的logging.properties文件实现原生日志轮转(适用于java.util.logging框架):
$CATALINA_HOME/conf/logging.properties。catalina日志为例):handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
# 配置FileHandler(轮转设置)
1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.limit = 10485760 # 单个文件最大10MB(10*1024*1024)
1catalina.org.apache.juli.FileHandler.count = 5 # 保留5个备份文件
1catalina.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter
$CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh。3. 编写Shell脚本自动化清理旧日志
对于无法用Logrotate处理的日志(如catalina.out,该文件默认不轮转),可编写脚本定期清理:
sudo vim /usr/local/bin/clear_tomcat_logs.sh,内容如下:#!/bin/bash
LOG_PATH="/var/log/tomcat" # Tomcat日志目录(根据实际路径修改)
find "$LOG_PATH" -name "catalina.out" -mtime +7 -exec rm -f {} \; # 删除7天前的catalina.out
find "$LOG_PATH" -name "*.log" -mtime +30 -exec rm -f {} \; # 删除30天前的其他.log文件
> "$LOG_PATH/catalina.out" # 清空当前catalina.out(避免文件过大)
sudo chmod +x /usr/local/bin/clear_tomcat_logs.sh。sudo crontab -e,添加以下行:59 23 * * * /usr/local/bin/clear_tomcat_logs.sh
此脚本可补充Logrotate的不足,确保catalina.out等文件不会无限增长。
4. 优化日志级别减少不必要的输出
过高的日志级别(如FINE、FINER)会产生大量无用日志,增加磁盘占用。建议调整日志级别:
$CATALINA_HOME/conf/logging.properties文件,修改根日志记录器的级别:.handlers = java.util.logging.ConsoleHandler
.level = WARNING # 仅记录WARNING及以上级别的日志(ERROR/SEVERE)
localhost)调整级别,可添加:org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = WARNING
修改后需重启Tomcat生效。此方法可从源头上减少日志量。
5. 控制访问日志的大小与保留
Tomcat的访问日志(由AccessLogValve生成)默认无轮转,需手动配置:
$CATALINA_HOME/conf/server.xml文件,找到AccessLogValve配置项(位于Host标签内),添加或修改以下属性:<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
rotatable="true" # 启用轮转
maxDays="30" # 保留30天的日志
fileDateFormat="yyyy-MM-dd" # 日志文件按日期命名(如localhost_access_log.2025-09-30.txt)
/>
6. 定期备份重要日志
关键日志(如catalina.out、localhost.log)需定期备份,防止误删或数据丢失:
tar命令备份:sudo tar -czvf /backup/tomcat_logs_$(date +%F).tar.gz /var/log/tomcat/。sudo crontab -e,添加以下行:0 2 * * 0 /bin/tar -czvf /backup/tomcat_logs_$(date +\%F).tar.gz /var/log/tomcat/
备份文件可存储在外部存储设备或云存储中,确保数据安全。
7. 监控日志文件状态
定期监控日志文件的大小和数量,及时发现异常(如日志暴增):
du命令查看日志目录大小:du -sh /var/log/tomcat/。ls命令查看日志文件数量:ls -lh /var/log/tomcat/*.log | wc -l。tail命令实时查看最新日志:tail -f /var/log/tomcat/catalina.out(按Ctrl+C退出)。