温馨提示×

centos如何清理java日志文件

小樊
34
2026-09-12 00:32:14
栏目: 编程语言

在 CentOS 上清理 Java 日志文件,通常取决于日志生成方式(如 Tomcat、Spring Boot、log4j/logback、系统 journal 等)。下面按常见场景给你一套实用方案。


一、先找到 Java 日志在哪里

1. 常见 Java 日志路径

/var/log/
/usr/local/tomcat/logs/
/opt/*/logs/
~/app/logs/

2. 查找 Java 相关日志

find / -name "*.log" 2>/dev/null | grep -E "java|tomcat|spring"

或按大小排序:

du -sh /var/log/* | sort -h

二、手动清理(最安全)

1. 删除旧日志(如 30 天前)

find /path/to/logs -name "*.log*" -mtime +30 -delete

示例(Tomcat):

find /usr/local/tomcat/logs -name "*.log" -mtime +30 -delete
find /usr/local/tomcat/logs -name "*.txt" -mtime +30 -delete

2. 清空正在写入的日志(不删文件)

> /path/to/app.log

truncate -s 0 /path/to/app.log

⚠️ 不要用 rm 删正在写入的日志,可能导致 Java 进程不释放磁盘空间。


三、Tomcat 日志清理(非常常见)

1. 清理 catalina / localhost 日志

cd /usr/local/tomcat/logs
rm -f catalina.*.log
rm -f localhost.*.log
rm -f host-manager.*.log
rm -f manager.*.log

2. 禁用或限制 catalina.out

bin/catalina.sh 中:

CATALINA_OUT=/dev/null

四、Log4j / Logback 自动清理(推荐)

1. Logback 示例(自动按天+保留)

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

2. Log4j2 示例

<DefaultRolloverStrategy max="30"/>

五、使用 logrotate(CentOS 推荐)

1. 创建配置

vi /etc/logrotate.d/java-app

示例:

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

2. 测试

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

六、清理 systemd / journal 日志(如果 Java 用 systemd)

journalctl --disk-usage
journalctl --vacuum-time=7d

七、清理后释放磁盘空间检查

df -h
lsof | grep deleted

如果有 deleted 文件未释放:

systemctl restart tomcat
# 或重启 Java 服务

总结建议

✅ 小项目:find + rm
✅ 生产环境:logrotate
✅ Spring Boot:logback/log4j2 自动滚动
❌ 不要直接 rm 正在写的日志

如果你能告诉我:

  • Java 类型(Tomcat / Spring Boot / 普通 jar)
  • 日志路径
  • CentOS 版本

我可以给你精准清理命令

0