温馨提示×

centos java日志怎样压缩

小樊
39
2026-10-03 03:41:23
栏目: 编程语言

在 CentOS 上压缩 Java 日志,常见做法有 手动压缩、定时任务(cron)压缩、使用 Java 日志框架自带的滚动压缩 三种方式。下面分别说明。


一、手动压缩(临时处理)

如果日志文件是:

/opt/app/logs/app.log

压缩命令:

gzip /opt/app/logs/app.log

生成:

app.log.gz

或保留原文件:

tar -czf app.log.tar.gz app.log

二、使用 logrotate(推荐,系统级方案)

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

示例:配置 Java 日志滚动+压缩

创建配置文件:

vim /etc/logrotate.d/java-app

内容示例:

/opt/app/logs/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

说明:

  • daily:每天滚动
  • rotate 7:保留 7 份
  • compress:压缩旧日志(默认 gzip)
  • copytruncate:不重启 Java 进程直接截断日志(常用)
  • missingok:日志不存在不报错

手动测试:

logrotate -d /etc/logrotate.d/java-app   # 调试
logrotate -f /etc/logrotate.d/java-app   # 强制执行

三、Java 日志框架自动压缩(应用层)

1️⃣ Logback(最常用)

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/opt/app/logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>/opt/app/logs/app.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>

✅ 自动生成 .gz 压缩日志


2️⃣ Log4j2

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

四、cron 定时压缩(简单但不优雅)

crontab -e
0 0 * * * gzip -f /opt/app/logs/*.log

⚠️ 不推荐(Java 仍写原文件,可能丢日志)


✅ 推荐方案总结

场景 推荐方式
生产 Java 应用 Logback / Log4j2 自带压缩
第三方 Java 程序 logrotate
临时清理 手动 gzip

如果你能提供:

  • Java 日志路径
  • 使用的日志框架(logback / log4j2 / 原生)
  • 是否允许重启应用

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

0 踩