温馨提示×

Ubuntu Java日志包含哪些信息

小樊
45
2026-01-04 11:09:26
栏目: 编程语言

Ubuntu 环境下 Java 日志的组成与定位

Ubuntu 上,Java 相关日志通常来自四个层面:应用业务日志、JVM 运行日志(GC、线程)、JVM 致命错误日志(hs_err)、以及系统级日志。下面按来源说明各自包含的关键信息与典型字段。

一 应用业务日志

  • 来源与载体:由 Log4j、Logback、SLF4J、java.util.logging 等日志框架输出,写入应用配置的日志文件,或打印到 stdout/stderr
  • 典型字段:
    • 时间戳(精确到毫秒)
    • 日志级别(如 DEBUG、INFO、WARN、ERROR)
    • 线程名/线程ID
    • 类名/方法名(或 logger 名称)
    • 日志消息(含业务上下文)
    • 可选的 MDC/NDC 上下文(如请求ID、租户ID)
  • 示例格式:
    • 2023-10-01 10:00:00 INFO [main] com.example.MyClass - Application started
  • 用途:业务链路追踪、错误定位、审计与统计。

二 JVM 运行日志 GC 与线程

  • GC 日志
    • 作用:观察 年轻代/老年代 回收行为、停顿时间、晋升失败等。
    • 常见 JVM 参数:
      • -XX:+PrintGCDetails(详细 GC 信息)
      • -XX:+PrintGCTimeStamps(GC 时间戳)
      • -Xloggc:<file_path>(GC 日志文件路径)
    • 关键信息:GC 类型(如 G1、Parallel、ZGC)、各代容量与使用情况、回收前后内存变化、总停顿时间等。
  • 线程相关
    • 线程快照:使用 jstack 输出所有线程的 栈轨迹状态(RUNNABLE、BLOCKED、WAITING)、锁持有与等待关系,用于定位 死锁/阻塞/高占用 等问题。
    • 可视化工具:jconsole、VisualVM 可在线查看线程、内存与 CPU 概况。

三 JVM 致命错误日志 hs_err_pid.log

  • 触发时机:发生 HotSpot 无法恢复的致命错误(如 EXCEPTION_ACCESS_VIOLATION 访问非法地址)时自动生成,文件名形如 hs_err_pid.log
  • 关键信息:
    • 崩溃概要 与错误类型
    • 寄存器/线程状态 快照
    • 堆栈信息(Java 与 native)
    • 加载的共享库 与可能的本地代码问题线索
    • 环境信息(JVM 版本、启动参数、操作系统与 CPU 等)
  • 用途:定位 JVM 崩溃、本地库冲突、硬件指令异常等难以通过业务日志发现的问题。

四 系统级日志

  • 日志位置与机制:
    • Ubuntu 常用 systemd-journald,日志以二进制形式保存在 /var/log/journal/;同时常配合 rsyslog 输出到 /var/log/syslog。传统 /var/log/messages 在 Ubuntu 上通常不存在或为空(除非特别配置)。
  • 与 Java 相关的典型线索:
    • OOM killer 终止 Java 进程(内存不足)
    • abrt-hook-ccpp 记录的 SIGABRT 崩溃与 core dump 通知
    • JVM 或启动脚本通过 syslog 输出的启动/停止/告警信息
  • 常用查看方式:journalctl -u (按服务过滤)、tail/less/grep 查看 /var/log/syslog

五 快速定位与常用命令

  • 查看应用日志:
    • 实时跟踪:tail -f /path/to/app.log
    • 关键字检索:grep “ERROR” /path/to/app.log
    • 大文件分页:less /path/to/app.log
  • 获取线程快照与监控:
    • 线程分析:jstack > thread_dump.txt
    • 动态观测:jconsole / VisualVM
  • GC 日志:
    • 实时查看:tail -f /var/log/java/gc.log
  • 系统线索:
    • 服务日志:journalctl -u your-java-service
    • 综合系统日志:grep -i “java|oom|abrt” /var/log/syslog
  • 分析建议:结合 日志级别时间窗口 过滤,必要时引入 ELK/Graylog 做聚合与可视化。

0