首先确认Java进程是否正常运行,使用ps -ef | grep java命令查看所有Java进程的PID、启动参数及运行状态。接着根据应用配置(如Spring Boot的application.properties中logging.file.name=logs/application.log,或Tomcat的catalina.out)找到日志文件路径,确保日志文件存在且路径正确。
使用tail -f /path/to/logfile.log命令实时跟踪日志文件的最新内容,快速捕捉新增的错误信息。若需快速定位错误行,可通过grep "ERROR" /path/to/logfile.log过滤出包含“ERROR”的日志条目;若需持续监控,可结合tail -f与grep,如tail -f /path/to/logfile.log | grep "ERROR"。
若Java应用日志信息不足,可通过journalctl命令查看系统级日志。例如,使用journalctl -u java_service_name查看特定Java服务的日志,或journalctl --since "1 hour ago"查看过去一小时的日志记录,从中获取Java进程崩溃、资源不足等系统级线索。
若Java进程因崩溃(如内存溢出、JNI错误)终止,会生成hs_err_pid*.log文件(*代表进程ID,位于应用运行目录或/tmp下)。解析该日志的关键信息:
SIGSEGV(段错误,内存访问问题)、OutOfMemoryError(内存溢出);libjvm.so中的函数调用)。通过修改日志框架配置(如Log4j的log4j.properties、Logback的logback.xml)调整日志级别,减少无关日志干扰。例如:
ERROR,仅记录错误信息:log4j.rootLogger=ERROR, stdout(Log4j)或<root level="ERROR"><appender-ref ref="stdout"/></root>(Logback);DEBUG,定位问题后再恢复。避免单个日志文件过大导致磁盘空间耗尽,使用logrotate工具配置日志轮转。编辑/etc/logrotate.d/your_application文件,添加如下配置(以每日轮转、保留7天为例):
/path/to/your/logfile.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root root
}
测试配置有效性:sudo logrotate -d /etc/logrotate.d/your_application,加载新配置:sudo systemctl reload logrotate。
OutOfMemoryError,通过jmap -heap <PID>查看堆内存使用情况,调整JVM参数增加内存(如-Xmx2g设置最大堆内存为2GB);ClassNotFoundException,确认类路径(-cp参数)是否包含所需JAR包;SQLException,检查数据库连接URL、用户名密码是否正确,数据库服务是否正常运行。对于复杂日志,可使用专业工具提升排查效率: