温馨提示×

centos如何调试java日志

小樊
47
2026-09-27 06:47:02
栏目: 编程语言

在 CentOS 上“调试 Java 日志”一般包含两层意思:
1️⃣ 让 Java 程序输出更详细的日志(应用层日志)
2️⃣ 查看 / 定位 Java 运行时的日志和异常(系统 & 排错)

下面从常见场景给你一个实用指南。


一、Java 应用日志(最常见)

1️⃣ 使用日志框架(推荐)

Java 项目一般使用:

  • Logback
  • Log4j2
  • java.util.logging (JUL)

示例(Logback)

logback.xml:

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>/var/log/myapp/app.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

✅ 调整 level:

  • INFO → 正常
  • DEBUG → 调试
  • TRACE → 最详细

2️⃣ 通过启动参数控制日志

java -Dlog.level=DEBUG -jar app.jar

或在 Spring Boot 中:

java -Dlogging.level.root=DEBUG -jar app.jar

二、CentOS 上查看 Java 日志

1️⃣ 实时查看日志

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

2️⃣ 搜索错误

grep ERROR /var/log/myapp/app.log

3️⃣ 查看系统日志(服务方式运行)

如果是 systemd 服务:

journalctl -u myapp.service -f

三、Java 崩溃 / 异常调试

1️⃣ 查看 Java 报错堆栈

直接在控制台或日志中找:

Exception in thread "main"
java.lang.NullPointerException

2️⃣ 生成 Heap Dump(内存问题)

jmap -dump:live,format=b,file=/tmp/heap.hprof <pid>

3️⃣ 查看 JVM 参数

jinfo <pid>

4️⃣ 线程死锁分析

jstack <pid> > thread.txt

四、远程调试(IDE 联调)

1️⃣ 启动 Java 远程调试

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar

CentOS 防火墙放行:

firewall-cmd --add-port=5005/tcp --permanent
firewall-cmd --reload

2️⃣ IDEA / Eclipse 连接

  • Host: CentOS IP
  • Port: 5005

五、常见问题排查清单

✅ 日志没输出?

  • 检查日志路径权限
  • 检查日志框架是否初始化
  • 检查 level 是否过高

✅ 日志太多?

  • 使用 grep
  • 按包控制日志级别

✅ 服务启动就挂?

journalctl -xe

六、推荐目录规范(CentOS)

/var/log/myapp/
/etc/myapp/
/opt/myapp/

如果你能告诉我:

  • 用的什么框架(Spring Boot?普通 Java?)
  • 日志现在在哪、是什么形式
  • 是“没日志”还是“想看更详细”

我可以给你更针对性的配置示例。

0 踩