CentOS Java日志清理策略
小樊
32
2025-11-25 23:31:10
CentOS Java日志清理策略
一 策略总览与优先级
- 建议采用“应用内滚动 + 系统级 logrotate + 归档/分析”的多层治理,既控制单文件大小,又控制总量,同时便于审计与检索。
- 优先级建议:
- 在应用内使用日志框架(如 Logback、Log4j2)配置基于时间与大小的滚动与保留;
- 在操作系统层用 logrotate 做二次保护与统一清理;
- 对历史日志做压缩归档,必要时接入 ELK 做检索分析。
二 应用内日志框架配置
- Logback(推荐)
- 使用 SizeAndTimeBasedRollingPolicy 同时按时间与大小滚动,限制历史与总量,避免无限增长。
- 示例要点:
- fileNamePattern:滚动文件命名与滚动周期(如按天/按小时),需要产生索引时用 .%i。
- maxFileSize:单文件上限(如 10MB)。
- maxHistory:保留天数(如 30 天)。
- totalSizeCap:历史日志总量上限(如 1GB),超出则删除最旧归档。
- 参考配置片段:
-
- logs/app.log
- %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
- logs/app-%d{yyyy-MM-dd}.%i.log
- 10MB
- 30
- 1GB
-
-
- Log4j2
- 使用 RollingFileAppender 配合 TimeBasedTriggeringPolicy 与 SizeBasedTriggeringPolicy,并用 DefaultRolloverStrategy max 控制保留个数。
- 示例要点:
- fileName:当前日志路径。
- filePattern:归档命名(如按天/小时滚动并压缩:app-%d{yyyy-MM-dd}-%i.log.gz)。
- SizeBasedTriggeringPolicy:如 250MB。
- TimeBasedTriggeringPolicy:按天/小时滚动(interval=1,modulate=true 对齐周期边界)。
- DefaultRolloverStrategy:如 max=20(最多保留 20 个归档)。
三 系统级 logrotate 配置
- 适用场景:对未内置滚动的应用日志、或需要统一策略管理的目录(如 /opt/、/var/log/ 下的应用日志)。
- 创建配置:/etc/logrotate.d/java_app
- 示例要点:
- 路径:/path/to/your/java/logs/*.log
- 频率:daily(按天轮转)
- 保留:rotate 7(保留 7 份)
- 压缩:compress(旧日志压缩)
- 延迟压缩:delaycompress(下次轮转再压缩,便于排查)
- 空文件不轮转:notifempty
- 文件缺失不报错:missingok
- 新建文件权限与属主:create 640 root adm
- 参考配置片段:
- /path/to/your/java/logs/*.log {
- daily
- rotate 7
- compress
- delaycompress
- missingok
- notifempty
- create 640 root adm
- }
- 调试与生效
- 语法检查:logrotate -d /etc/logrotate.d/java_app
- 强制执行一次:logrotate -f /etc/logrotate.d/java_app
- 说明:logrotate 由 cron 每日触发,无需额外 systemd 重载。
四 系统日志 journald 清理
- 若应用通过 systemd 启动并将 stdout/stderr 接入 journald,需单独管理其日志体积。
- 常用命令(按需择一或组合):
- 按时间保留:journalctl --vacuum-time=1w(仅保留最近一周)
- 按容量保留:journalctl --vacuum-size=500M(仅保留最近 500MB)
- 注意:journald 的日志与文件轮转无关,需单独维护其占用。
五 归档分析与落地步骤
- 归档与检索
- 将历史 .gz 归档到对象存储或备份盘,必要时接入 ELK(Elasticsearch、Logstash、Kibana) 做检索与可视化,便于故障排查与审计。
- 快速落地清单
- 明确日志路径:常见位置包括 /var/log/(系统服务)、应用安装目录下的 logs/(如 /opt/tomcat/logs/)、或 /usr/local/ 等,先定位再制定策略。
- 先改应用内策略:为 Logback/Log4j2 设置按天+按大小滚动、保留天数与总量上限。
- 再加系统层保护:为日志目录配置 logrotate(daily、rotate、compress、delaycompress、missingok、notifempty、create)。
- 若用 systemd:配置 journald 的保留策略(–vacuum-time / --vacuum-size)。
- 验证与演练:用 logrotate -d/-f 验证;观察磁盘与日志生成趋势,必要时调整阈值。