温馨提示×

怎样清理CentOS Java日志

小樊
58
2026-07-08 22:44:39
栏目: 编程语言

在 CentOS 上清理 Java 日志,要分情况处理,因为 Java 日志可能来自 应用本身、Tomcat、系统服务、容器 等。下面按常见场景给你一个完整、安全的清理方案。


一、先确认 Java 日志在哪里(很重要)

1️⃣ 常见 Java 日志目录

/var/log/
/opt/*/logs/
/usr/local/*/logs/
/home/*/logs/
/var/log/tomcat/
/var/log/elasticsearch/
/var/log/kafka/

2️⃣ 查找 Java 相关日志

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

二、清理 Java 应用日志(最常见)

✅ 情况 1:普通 Java / Spring Boot 应用

日志文件示例

app.log
app.log.2024-01-01
app.log.2024-01-02.gz

安全清理方式(推荐)

# 只删除 7 天前的日志
find /opt/app/logs -name "*.log*" -mtime +7 -delete

⚠️ **不要直接 rm -rf ***,避免误删正在写入的日志


✅ 情况 2:正在运行的 Java 程序日志

如果 Java 进程正在写日志:

正确做法(清空而不是删除)

: > app.log

或

truncate -s 0 app.log

✅ 不会中断程序
❌ 直接 rm 可能导致磁盘不释放


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

Tomcat 日志位置

/var/log/tomcat/
/usr/local/tomcat/logs/

常见日志

catalina.out
localhost.log
host-manager.log
manager.log

清理 catalina.out(重点)

: > /usr/local/tomcat/logs/catalina.out

删除旧日志

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

四、使用 logrotate(强烈推荐 ✅)

1️⃣ 查看是否已配置

ls /etc/logrotate.d/

2️⃣ 示例:Java 应用日志配置

vim /etc/logrotate.d/myjava
/opt/app/logs/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

✅ copytruncate 适合 Java 程序
✅ 自动清理,无需人工干预


五、systemd Java 服务日志(journalctl)

查看 Java 服务日志

journalctl -u your-java-service --disk-usage

清理 systemd 日志

journalctl --vacuum-time=7d

或

journalctl --vacuum-size=500M

六、Docker / Kubernetes 中的 Java 日志

Docker

docker logs --tail 100 容器名

清理 Docker 日志:

truncate -s 0 /var/lib/docker/containers/*/*-json.log

七、清理前的安全检查(强烈建议)

df -h        # 查看磁盘
du -sh /var/log/*
lsof | grep deleted   # 查看被删除但未释放的文件

八、推荐清理策略(生产环境)

场景 建议
正在运行 truncate
历史日志 find + mtime
长期方案 logrotate
容器 docker log 限制

九、如果你愿意,我可以帮你:

✅ 精确分析你的 Java 日志路径
✅ 写一份 logrotate 配置
✅ 判断 磁盘占用是否由 Java 日志引起

你可以直接贴:

ls -lh /var/log/
ps -ef | grep java

0 踩