温馨提示×

centos怎么切割java日志文件

小樊
46
2026-10-14 21:25:25
栏目: 编程语言

在 CentOS 上“切割 Java 日志文件”常见有 3 种方式,按使用频率从高到低说明:


一、使用 logrotate(最推荐 ✅)

适用场景:Tomcat、Spring Boot(输出到文件)、普通 Java 应用日志

1️⃣ 创建 logrotate 配置

sudo vi /etc/logrotate.d/java-app

示例(按天切割,保留 7 天):

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

2️⃣ 参数说明

  • daily:每天切割
  • rotate 7:保留 7 份
  • compress:压缩旧日志
  • copytruncate:不重启 Java 进程直接截断日志(常用)

3️⃣ 手动测试

sudo logrotate -f /etc/logrotate.d/java-app

二、Spring Boot 项目(推荐内置方案)

使用 logback / log4j2 自动切割

logback 示例

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

✅ 无需 logrotate,应用自己切


三、手动脚本切割(不推荐但可用)

#!/bin/bash
LOG=/opt/app/logs/app.log
DATE=$(date +%Y%m%d)

mv $LOG $LOG.$DATE
touch $LOG

# 如果是 Java 进程
kill -USR1 $(pgrep -f java)

⚠️ 需要 Java 支持信号或自己处理


四、常见问题

❓ 日志不更新?

  • 用了 mv 但没 copytruncate
  • Java 仍写旧文件描述符

✅ 解决:用 copytruncate 或应用内切割

❓ Tomcat 日志怎么切?

/opt/tomcat/logs/catalina.out {
    daily
    rotate 10
    compress
    copytruncate
}

总结建议

场景 方案
通用 Java 日志 logrotate
Spring Boot logback/log4j2
容器 应用内切割

如果你能告诉我:

  • Java 启动方式(jar / tomcat / docker)
  • 日志路径

我可以给你 精确配置。

0 踩