温馨提示×

CentOS Java日志怎么处理

小樊
47
2026-08-30 07:39:03
栏目: 编程语言

在 CentOS 上处理 Java 日志,通常可以从 日志来源、日志位置、日志分析与清理、日志轮转(logrotate) 以及 常见问题排查 几个方面来做。下面给你一个比较完整的实战总结。


一、Java 日志常见来源

1️⃣ 应用自身日志

取决于你使用的日志框架:

框架 常见日志文件
Log4j / Log4j2 logs/app.loglogs/error.log
Logback logs/app.log
JUL(java.util.logging) 自定义路径

通常位于:

/opt/app/logs/
/var/log/app/
~/project/logs/

2️⃣ Tomcat 日志(如使用)

/opt/tomcat/logs/

常见文件:

  • catalina.out
  • localhost.log
  • manager.log

3️⃣ JVM / GC 日志

如果启动时开启了 GC 日志:

java -Xlog:gc*:file=/var/log/app/gc.log

4️⃣ systemd / journald 日志

如果是用 systemd 管理的 Java 服务:

journalctl -u your-java-service.service

二、CentOS 上查看 Java 日志

实时查看日志

tail -f /var/log/app/app.log

搜索错误

grep -i error /var/log/app/app.log
grep -i exception /var/log/app/app.log

查看最近 N 行

tail -n 200 /var/log/app/app.log

分页查看

less /var/log/app/app.log

三、Java 日志轮转(非常重要)

✅ 使用 logrotate(强烈推荐)

示例:/etc/logrotate.d/java-app

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

说明:

  • daily:每天轮转
  • rotate 7:保留 7 份
  • compress:压缩旧日志
  • copytruncate:适合 Java 进程不关闭文件句柄的情况

测试配置

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

⚠️ Java 程序本身不重新打开日志文件怎么办?

✅ 推荐做法:

  • 使用 Log4j2 / Logback 内置滚动策略
  • 避免只依赖 catalina.outcopytruncate

四、CentOS 上 Java 日志的清理策略

1️⃣ 定期清理旧日志

find /var/log/app -name "*.log.*" -mtime +30 -delete

2️⃣ 防止磁盘被写满

df -h
du -sh /var/log/*

五、Java 日志配置优化建议

✅ Logback 示例

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

✅ 日志级别控制

<root level="INFO">
    <appender-ref ref="FILE"/>
</root>

避免生产环境使用 DEBUG


六、常见问题排查

1️⃣ Java 进程还在,但日志不写?

  • 磁盘满了
  • 日志目录无写权限
  • 日志框架缓冲(asyncAppender)

检查:

df -h
ls -ld /var/log/app

2️⃣ OOM / 崩溃日志在哪?

  • 应用日志
  • -XX:ErrorFile=/var/log/app/hs_err_pid.log
  • GC 日志

七、总结(推荐组合)

最佳实践

  • Java 日志:Log4j2 / Logback 自带滚动
  • 系统级:logrotate
  • 服务管理:systemd + journalctl
  • 定期清理 + 监控磁盘

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

  • Java 版本
  • 是否使用 Tomcat / Spring Boot
  • 日志路径
  • 是否磁盘被写满

我可以帮你 直接给出可用的 logrotate 配置或日志框架配置

0