温馨提示×

centos java日志怎么压缩

小樊
46
2026-09-09 02:48:41
栏目: 编程语言

在 CentOS 上压缩 Java 日志,常见做法有 手动压缩、定时任务压缩、用日志框架自带滚动压缩 几种方式。下面按使用场景给你说明。


一、手动压缩(最简单)

假设你有日志文件:

/var/log/java/app.log

用 gzip 压缩

gzip /var/log/java/app.log

生成:

app.log.gz

用 zip 压缩

zip app.log.zip app.log

压缩整个日志目录

tar -czf java-logs.tar.gz /var/log/java/

二、用 logrotate(推荐,自动化)

CentOS 自带 logrotate,非常适合 Java 日志。

示例:压缩 Tomcat / Spring Boot 日志

新建配置:

vi /etc/logrotate.d/java-app

内容示例:

/var/log/java/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

说明:

  • daily:每天轮转
  • rotate 7:保留 7 份
  • compress:压缩旧日志
  • copytruncate:不重启 Java 进程也能截断日志(常用)

手动测试

logrotate -d /etc/logrotate.d/java-app   # 模拟
logrotate -f /etc/logrotate.d/java-app   # 强制执行

三、Java 日志框架自带压缩(最省心)

1️⃣ Logback(Spring Boot 常用)

logback-spring.xml

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/var/log/java/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>/var/log/java/app.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
        <maxHistory>7</maxHistory>
    </rollingPolicy>
</appender>

✅ 自动生成 app.2026-01-21.log.gz


2️⃣ Log4j2

<RollingFile name="File" fileName="/var/log/java/app.log"
             filePattern="/var/log/java/app-%d{yyyy-MM-dd}.log.gz">
    <PatternLayout pattern="%d %p %c{1.} %m%n"/>
    <TimeBasedTriggeringPolicy interval="1"/>
    <DefaultRolloverStrategy max="7"/>
</RollingFile>

四、定时任务压缩旧日志(crontab)

crontab -e

每天凌晨压缩前一天日志:

0 0 * * * find /var/log/java -name "*.log" -mtime +1 -exec gzip {} \;

五、推荐方案总结

场景 推荐方式
生产 Java 服务 Logback / Log4j2 自带压缩
已有日志文件 logrotate
临时处理 gzip / tar
不想改代码 logrotate + copytruncate

如果你能告诉我:

  • 用的是 Tomcat / Spring Boot / 普通 Java 程序
  • 日志路径
  • 是否允许重启服务

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

0