温馨提示×

centos java日志怎样清理

小樊
39
2026-09-18 06:18:30
栏目: 编程语言

在 CentOS 上清理 Java 日志,通常有多种方式,取决于日志类型和是否还希望后续自动管理。下面按常见场景给你说明。


一、常见 Java 日志位置

Java 日志一般来自以下几类:

  • 应用自身日志(如 log4j、logback)
    • /opt/xxx/logs/
    • /var/log/xxx/
  • Tomcat 日志
    • /usr/local/tomcat/logs/
  • Systemd / journalctl 日志
    • Java 以 systemd 服务运行时的日志
  • Java 崩溃日志(hs_err_pid)
    • 一般在应用工作目录

二、手动清理(临时)

1️⃣ 直接删除日志文件

# 查看日志大小
du -sh /opt/xxx/logs/*

# 删除旧日志
rm -f /opt/xxx/logs/*.log.*
rm -f /opt/xxx/logs/*.log

⚠️ 注意:

  • 如果 Java 进程正在写日志,不要删正在写的文件,否则磁盘空间不会释放
  • 更安全方式见下文

2️⃣ 清空正在写入的日志(推荐)

# 清空而不删除
: > /opt/xxx/logs/app.log

或

truncate -s 0 /opt/xxx/logs/app.log

三、自动清理(推荐)

✅ 方法 1:logrotate(最常用)

CentOS 自带 logrotate

示例配置

vim /etc/logrotate.d/java-app

内容示例:

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

参数说明:

  • daily:每天切割
  • rotate 7:保留 7 份
  • compress:压缩旧日志
  • copytruncate:不重启 Java 进程

测试:

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

✅ 方法 2:Tomcat 自带清理

vim /usr/local/tomcat/conf/logging.properties

减少日志级别或关闭 access log

或定时清理:

find /usr/local/tomcat/logs -mtime +7 -delete

✅ 方法 3:systemd journal 日志

如果是 systemd 启动的 Java:

# 查看占用
journalctl --disk-usage

# 清理
journalctl --vacuum-time=7d

配置文件:

vim /etc/systemd/journald.conf
SystemMaxUse=500M

四、Java 应用层优化(根本解决)

logback / log4j2 配置滚动日志

示例(logback):

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

五、总结建议

✅ 临时清理:用 truncate
✅ 长期方案:logrotate + 应用日志滚动
✅ 不要直接 rm 正在写的日志文件

如果你愿意,可以告诉我:

  • Java 是 Tomcat / Spring Boot / 普通 jar
  • 日志路径
  • 是否用 systemd

我可以给你一份精准可用的配置。

0 踩