Ubuntu Java日志清理频率建议
总体原则
推荐频率与保留策略
| 场景 | 轮转频率 | 保留周期 | 建议做法 |
|---|---|---|---|
| 高吞吐/生产环境(如 Tomcat/Jetty,控制台输出到 catalina.out) | 按天 | 7–14 天 | 使用 logrotate 按天轮转并压缩,保留约两周,配合 postrotate 通知应用重新打开日志句柄 |
| 常规 Java 应用(按天滚动) | 按天 | 7 天 | 使用 logrotate 管理,保留一周,压缩旧日志节省空间 |
| 大文件风险应用(按大小滚动) | 按大小(如 10MB/文件) | 10–20 个文件 | 在应用内用 Logback/Log4j2 配置基于大小的滚动与数量上限,避免单文件过大 |
| 合规/审计要求 | 按日或按周 | ≥90 天 | 采用外部归档(如拷贝到对象存储/备份系统),本地仅保留短期副本以便快速排查 |
| 开发/测试环境 | 按天或按周 | 3–7 天 | 可更激进清理,优先保证磁盘与CI/CD顺畅 |
实施方法
/home/tomcat/logs/catalina.out {
daily
rotate 20
compress
missingok
notifempty
create 644 root root
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid` 2>/dev/null || true
endscript
}
sudo logrotate -d /etc/logrotate.d/tomcat(干跑),sudo logrotate -f /etc/logrotate.d/tomcat(强制执行)。也可为普通应用创建 /etc/logrotate.d/java 统一配置。<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILE"/>
</root>
</configuration>
0 2 * * * find /var/log/your-app -type f -name "*.log" -mtime +30 -delete
监控与容量规划