首先需要找到目标Java进程的PID(进程ID)和日志文件路径。
ps -ef | grep java命令列出所有Java进程,获取其PID(第二列)。application.properties/application.yml,Tomcat的server.xml)。常见日志文件名包括application.log(Spring Boot默认)、catalina.out(Tomcat默认)。若未明确配置,可通过find / -name "*.log" 2>/dev/null命令全局搜索。定位到日志文件后,使用以下命令快速筛选错误信息:
tail -f /path/to/your/logfile.log(如tail -f /var/log/tomcat/catalina.out),可动态跟踪日志输出。grep "ERROR" /path/to/your/logfile.log(如grep "ERROR" /opt/app/logs/application.log),仅显示包含“ERROR”的行,快速定位问题。grep "ERROR" /path/to/logfile.log | grep "2025-10-10"(按日期过滤)。若Java应用通过systemd管理(如java_service_name服务),可使用journalctl查看系统级日志:
journalctl -u java_service_name(替换为实际服务名)。journalctl -u java_service_name --since "1 hour ago" | grep "ERROR"。journalctl -f(需结合grep过滤Java错误)。-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/app/gc.log。tail -f /var/log/app/gc.log实时查看GC情况,若频繁Full GC,可能存在内存泄漏。hs_err_pid<pid>.log文件(路径通常为/var/log/java/或进程工作目录)。该文件包含崩溃原因(如OOM、Native代码错误),需重点查看“Problematic frame”部分。对于海量日志,可使用工具实现可视化与深度分析:
logstash.conf(输入、过滤、输出插件)。使用logrotate工具定期分割、压缩日志文件,防止日志占满磁盘:
/etc/logrotate.d/下新建文件(如java_app),内容如下:/path/to/your/java/logs/*.log {
daily # 每天轮转
rotate 7 # 保留7天
compress # 压缩旧日志
missingok # 忽略缺失文件
notifempty # 空日志不轮转
copytruncate # 复制后清空原文件(不影响应用写入)
}
logrotate -d /etc/logrotate.d/java_app(模拟运行),确认无误后手动触发:logrotate -f /etc/logrotate.d/java_app。若错误日志过少或未记录,需调整日志框架的级别(如Logback、Log4j):
application.properties/application.yml:logging.level.root=INFO # 根日志级别(INFO/INFO以上记录)
logging.level.com.example=DEBUG # 特定包的调试级别(DEBUG记录更详细)
logging.file.name=/var/log/app/application.log # 日志文件路径
logback.xml,调整root或logger的level:<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
<logger name="com.example" level="DEBUG" />
</configuration>
log4j2-spring.xml,调整Root或Logger的level:<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
<Logger name="com.example" level="DEBUG"/>
</Loggers>
</Configuration>
修改后需重启Java应用使配置生效。通过以上步骤,可系统定位CentOS中Java应用的日志错误,从实时查看、过滤到深度分析与配置优化,覆盖问题排查的全流程。