在 CentOS 上压缩 Java 日志,常见有 手动压缩、定时压缩(cron) 和 使用 Java 日志框架自动压缩(如 Logback / Log4j2) 几种方式。下面按使用场景说明。
gzip app.log
生成:app.log.gz
如果想保留原文件:
gzip -k app.log
tar -zcvf logs-2026-01-21.tar.gz /opt/app/logs/
0 2 * * * find /opt/app/logs -name "*.log" -mtime +7 -exec gzip {} \;
作用:
.log 文件这是 最推荐 的方式,适合 Java 应用(Spring Boot、Tomcat 等)。
sudo vi /etc/logrotate.d/myapp
内容:
/opt/app/logs/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
copytruncate
}
说明:
compress:使用 gzip 压缩copytruncate:不重启 Java 进程截断日志(重要)rotate 30:保留 30 天测试:
logrotate -d /etc/logrotate.d/myapp
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/logs/app.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
✅ 自动生成 .log.gz
<RollingFile name="RollingFile">
<FileName>/logs/app.log</FileName>
<FilePattern>/logs/app-%d{MM-dd-yyyy}.log.gz</FilePattern>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
| 场景 | 推荐方式 |
|---|---|
| 临时处理 | gzip |
| 服务器日志管理 | logrotate ✅ |
| Java 应用日志 | Logback / Log4j2 |
| 自动化运维 | cron + find |
如果你能告诉我:
我可以给你一套 可直接用的配置。