温馨提示×

CentOS Java日志如何清理

小樊
67
2026-07-20 16:20:17
栏目: 编程语言

在 CentOS 上清理 Java 日志,需要根据日志类型和产生方式来处理。下面按常见场景给你一套安全、可操作的清理方案。


一、先确认 Java 日志在哪里

1️⃣ 常见 Java 日志位置

/var/log/
/usr/local/xxx/logs/
/opt/xxx/logs/
~/logs/

常见文件名:

  • catalina.out(Tomcat)
  • app.log
  • spring.log
  • server.log
  • gc.log
  • *.log.*

二、临时清理(立即释放空间)

✅ 方法 1:清空日志文件(推荐)

不要直接 rm 正在写入的日志文件

# 清空 catalina.out
: > /opt/tomcat/logs/catalina.out

# 清空所有 .log 文件
for f in /opt/app/logs/*.log; do
  : > "$f"
done

✅ 优点:

  • 应用不中断
  • 文件句柄不丢失

❌ 不推荐方式

rm -f app.log

⚠️ 如果应用还在写日志,磁盘空间不会释放,必须重启应用。


三、删除历史日志(旧文件)

1️⃣ 删除 7 天前的日志

find /opt/app/logs -name "*.log*" -mtime +7 -delete

2️⃣ 只删除 .gz 压缩日志

find /opt/app/logs -name "*.gz" -mtime +7 -delete

四、Tomcat 日志清理(最常见)

Tomcat 日志目录

/opt/tomcat/logs/

清理 catalina.out

: > /opt/tomcat/logs/catalina.out

删除旧日志

find /opt/tomcat/logs -name "*.log" -mtime +7 -delete
find /opt/tomcat/logs -name "*.txt" -mtime +7 -delete

五、Java GC 日志清理

GC 日志示例

gc.log
gc.log.0
gc.log.1

清理:

find / -name "gc.log*" -mtime +7 -delete

✅ 建议 JVM 参数:

-Xlog:gc*:file=/var/log/gc.log:time,uptime,level,tags:filecount=5,filesize=10M

六、自动清理(长期方案 ✅)

1️⃣ 使用 logrotate(强烈推荐)

创建配置:

vim /etc/logrotate.d/java-app

示例:

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

立即测试:

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

七、Docker / Kubernetes 场景

Docker

docker logs --tail 100 容器名
docker system prune -f

K8s

kubectl logs pod名 > /dev/null

八、清理前必做检查(避免背锅)

df -h
du -sh /var/log/*
lsof | grep deleted

九、推荐清理策略(总结)

✅ 生产环境最佳实践

  • ✅ 使用 : > file 清空日志
  • ✅ 使用 logrotate 自动轮转
  • ✅ 不要直接 rm 正在写入的日志
  • ✅ 定期删除 7~30 天前的日志

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

  • ✅ Java 应用类型(Spring Boot / Tomcat / 自研)
  • ✅ CentOS 版本
  • ✅ 日志路径

我可以帮你定制一套完整清理方案。

0 踩