在 CentOS 上清理 Java 应用日志,常见做法分为手动清理、日志轮转和应用自身配置三类。下面按场景给你讲清楚。
常见位置:
/var/log/
/opt/xxx/logs/
/home/xxx/logs/
查找大日志文件:
find / -name "*.log" -size +100M
> /path/to/app.log
或
truncate -s 0 /path/to/app.log
⚠️ 不要直接 rm,否则正在运行的 Java 进程可能仍占用磁盘。
rm -f /path/to/app.log.2023-01-01
CentOS 自带 logrotate
vim /etc/logrotate.d/myjava
内容示例:
/opt/app/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
说明:
copytruncate:适合不能重启的 Java 程序compress:压缩旧日志rotate 7:保留 7 天测试:
logrotate -d /etc/logrotate.d/myjava
强制执行:
logrotate -f /etc/logrotate.d/myjava
<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</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
< RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd}.log.gz">
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="7"/>
</RollingFile>
df -h
du -sh /var/log/*
找到大文件后:
> 大文件.log
| 场景 | 建议 |
|---|---|
| 临时清理 | > logfile |
| 长期维护 | logrotate |
| Spring/Java 项目 | 用 Logback / Log4j2 |
| 不能重启服务 | copytruncate |
如果你愿意,可以告诉我:
我可以帮你写一份专属 logrotate 配置。