温馨提示×

centos如何分割java日志

小樊
46
2026-10-26 15:02:03
栏目: 编程语言

在 CentOS 上“分割 Java 日志”,通常有两种常见场景:

  1. Java 应用自己生成日志(如 logback / log4j2) → 用日志框架做滚动分割
  2. 已有大日志文件(如 nohup.out、catalina.out) → 用 logrotate 或 手动切割

下面按常见方式说明。


一、使用日志框架分割(推荐)

1. Logback 按大小 + 时间分割

logback.xml 示例:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>/data/logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>/data/logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxFileSize>100MB</maxFileSize>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>

✅ 效果:

  • 每天一个日志
  • 超过 100MB 继续分割
  • 保留 30 天

2. Log4j2 分割示例

log4j2.xml:

<RollingFile name="RollingFile"
             fileName="/data/logs/app.log"
             filePattern="/data/logs/app-%d{yyyy-MM-dd}-%i.log">
    <PatternLayout pattern="%d %p %c{1.} %m%n"/>
    <Policies>
        <TimeBasedTriggeringPolicy/>
        <SizeBasedTriggeringPolicy size="100 MB"/>
    </Policies>
    <DefaultRolloverStrategy max="30"/>
</RollingFile>

二、用 logrotate 分割(适合 nohup.out / catalina.out)

1. 创建 logrotate 配置

vi /etc/logrotate.d/java-app

示例:

/data/logs/app.log {
    daily
    rotate 30
    size 100M
    copytruncate
    missingok
    compress
    notifempty
}

参数说明:

  • copytruncate:不重启 Java 进程直接切割(常用)
  • compress:压缩旧日志
  • size 100M:超过 100M 才切

2. 手动测试

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

3. 查看是否执行

cat /var/lib/logrotate/logrotate.status

三、手动切割已有大日志(临时方案)

split -b 100M app.log app.log.part-

或按行:

split -l 100000 app.log app.log.part-

四、Tomcat 日志(catalina.out)特别说明

Tomcat 默认 不会自动分割 catalina.out

✅ 推荐方案:

  • 用 logrotate + copytruncate
  • 或改用 logback 接管日志

五、总结建议

场景 推荐方式
Spring Boot logback / log4j2
nohup.out logrotate
Tomcat logrotate
已生成大文件 split 临时处理

如果你能告诉我:

  • Java 应用类型(Spring Boot / Tomcat / 普通 Jar)
  • 日志路径
  • 当前日志大小

我可以直接给你可用配置文件。

0 踩