温馨提示×

centos如何压缩java日志

小樊
34
2026-10-09 00:04:59
栏目: 编程语言

在 CentOS 上压缩 Java 日志,常见有 手动压缩、定时压缩(cron) 和 使用 Java 日志框架自动压缩(如 Logback / Log4j2) 几种方式。下面按使用场景说明。


一、手动压缩(最常用)

1. 使用 gzip(推荐)

gzip app.log

生成:app.log.gz

如果想保留原文件:

gzip -k app.log

2. 使用 tar 打包并压缩

tar -zcvf logs-2026-01-21.tar.gz /opt/app/logs/

二、定时压缩旧日志(生产常用)

示例:每天压缩 7 天前的日志

0 2 * * * find /opt/app/logs -name "*.log" -mtime +7 -exec gzip {} \;

作用:

  • 每天 02:00
  • 压缩 7 天前的 .log 文件

三、使用 logrotate(CentOS 标准方案 ✅)

这是 最推荐 的方式,适合 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

四、Java 日志框架自动压缩(推荐开发阶段)

1. Logback(Spring Boot)

<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


2. Log4j2

<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

如果你能告诉我:

  • Java 应用类型(Spring Boot / Tomcat / 普通 jar)
  • 日志路径
  • 是否允许重启服务

我可以给你一套 可直接用的配置。

0 踩