1. 手动删除日志文件
手动清理是最基础的策略,适用于临时释放磁盘空间或处理紧急情况。操作步骤包括:定位Tomcat日志目录(通常为$CATALINA_HOME/logs,其中$CATALINA_HOME为Tomcat安装根目录);使用命令行工具删除指定日志文件,例如删除30天前的所有.log文件可使用命令:sudo find /path/to/tomcat/logs/ -type f -name "*.log" -mtime +30 -exec rm -rf {} \;。需注意,手动操作前应备份重要日志,避免误删影响问题排查。
2. 配置Tomcat内置日志滚动策略
通过修改Tomcat的conf/logging.properties文件,设置日志文件的自动滚动(按大小或时间分割)和保留期限,避免单个日志文件过大。关键配置项包括:
handlers:指定日志处理器(如1catalina.org.apache.juli.AsyncFileHandler);1catalina.org.apache.juli.AsyncFileHandler.directory:日志输出目录;1catalina.org.apache.juli.AsyncFileHandler.prefix:日志文件前缀;1catalina.org.apache.juli.AsyncFileHandler.maxDays:日志保留天数(如maxDays=30表示保留30天)。3. 使用logrotate工具自动化管理
logrotate是Linux系统自带的日志管理工具,可实现日志的自动轮转、压缩、删除,是Tomcat日志清理的推荐方案。配置步骤如下:
/etc/logrotate.d/tomcat文件,添加针对Tomcat日志的配置(以catalina.out为例):/path/to/tomcat/logs/catalina.out { daily # 每天轮转一次 rotate 7 # 保留最近7个日志文件 compress # 轮转后压缩(如gzip) missingok # 日志文件丢失时不报错 notifempty # 日志为空时不轮转 copytruncate # 创建新日志文件并截断旧文件(避免重启Tomcat) } sudo logrotate -d /etc/logrotate.d/tomcat(模拟运行,不实际删除文件);sudo logrotate /etc/logrotate.d/tomcat;cron每日自动执行logrotate,无需额外设置。该策略支持定时、批量操作,适合生产环境。4. 编写Shell脚本定期清理
通过Shell脚本定制清理逻辑(如按文件类型、时间删除),并结合cron定时任务实现自动化。示例脚本(clear_tomcat_logs.sh):
#!/bin/bash LOG_DIR="/path/to/tomcat/logs" # 删除7天前的.log和.txt日志文件 find "$LOG_DIR" -type f -name "*.log" -mtime +7 -exec rm -rf {} \; find "$LOG_DIR" -type f -name "*.txt" -mtime +7 -exec rm -rf {} \; # 清空catalina.out文件(避免日志无限增长) echo "" > "$LOG_DIR/catalina.out" chmod +x /path/to/clear_tomcat_logs.sh;cron定时任务(如每天凌晨1点执行):crontab -e,添加内容:0 1 * * * /path/to/clear_tomcat_logs.sh。5. 调整日志级别减少输出量
通过降低Tomcat日志级别,减少不必要的日志输出,从源头上控制日志文件大小。操作步骤:编辑conf/logging.properties文件,修改日志级别(如将java.util.logging.ConsoleHandler.level从FINE调整为WARNING或ERROR):
handlers = 1catalina.org.apache.juli.AsyncFileHandler 1catalina.org.apache.juli.AsyncFileHandler.level = WARNING # 仅记录警告及以上级别日志 该策略适合日志量过大但对调试需求较低的场景,可显著减少日志文件大小。
6. 使用第三方日志框架(如Log4j)
替换Tomcat默认的java.util.logging框架,使用Log4j等更强大的日志工具,实现按天分割、压缩、归档等高级功能。配置步骤:
log4j-1.2.17.jar和tomcat-juli-adapters.jar复制到$CATALINA_HOME/lib目录;conf/logging.properties文件;conf/context.xml中添加swallowOutput="true"(确保应用日志被捕获);conf/log4j.properties文件,配置日志输出规则(如按天分割、保留10个备份文件):log4j.rootLogger=INFO, CATALINA log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender log4j.appender.CATALINA.File=/path/to/tomcat/logs/catalina.log log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd # 按天分割 log4j.appender.CATALINA.MaxBackupIndex=10 # 保留10个备份文件 log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout log4j.appender.CATALINA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 该策略适合需要复杂日志管理的场景,灵活性和功能性更强。