在 CentOS 上定位 Java 日志,可以按下面几个层次来排查,从“最常见”到“最深入”。
先找到你的 Java 进程 PID:
ps -ef | grep java
或(推荐):
jps -l
示例:
12345 com.example.Main
大多数 Java 应用使用日志框架(Logback / Log4j2 / Log4j):
/var/log/
/opt/xxx/logs/
/usr/local/xxx/logs/
find / -name "*.log" 2>/dev/null | grep -E "java|app|service"
或
ls -lh /var/log/
app.log
app.out
server.log
catalina.out
spring.log
如果是 Tomcat:
/opt/tomcat/logs/
/usr/local/tomcat/logs/
/var/log/tomcat/
重点文件:
catalina.out
localhost.log
host-manager.log
实时查看:
tail -f catalina.out
如果你是通过 systemctl 启动 Java:
journalctl -u your-service-name -f
或查看 PID:
journalctl _PID=12345 -f
如果是这样启动的:
nohup java -jar app.jar &
日志默认在:
nohup.out
查看:
tail -f nohup.out
查看 Java 启动参数:
ps -ef | grep java
常见参数:
-Xlog:gc*
-verbose:gc
-XX:LogFile=/var/log/gc.log
查看 GC 日志:
tail -f /var/log/gc.log
find / -name "logback.xml" 2>/dev/null
查看:
grep -R "fileName" logback.xml
find / -name "log4j2.xml" 2>/dev/null
find / -name "log4j.properties" 2>/dev/null
默认日志:
application.properties / application.yml
查找:
grep -R "logging.file" /opt/app/
grep -R "logging.path" /opt/app/
netstat -tunlp | grep 8080
# 或
ss -lntp | grep 8080
拿到 PID 后再:
ls -l /proc/PID/fd
查看打开的日志文件。
✅ 一条命令找 Java 日志
find / -type f \( -name "*.log" -o -name "*.out" \) 2>/dev/null | xargs ls -lht | head -20
✅ 查看当前 Java 进程打开的文件
lsof -p PID | grep -E "log|out"
| 场景 | 日志位置 |
|---|---|
| Spring Boot | logs/ 或当前目录 |
| Tomcat | tomcat/logs/catalina.out |
| systemd | journalctl |
| nohup | nohup.out |
| 容器 | docker logs |
| GC | JVM 参数指定 |
如果你愿意,可以告诉我:
我可以给你 精确到文件级别 的定位方案。