在 CentOS 上“导出 Java 日志记录”通常分为几种情况,下面按常见场景给你说明,你可以对照自己的情况选择。
先确认日志输出到哪里:
ps -ef | grep java
查看启动参数中是否包含:
-Dlog4j.configuration=...
-Dlogging.config=...
或者查看项目配置文件:
log4j.propertieslog4j2.xmllogback.xml通常日志目录类似:
/opt/app/logs/
/var/log/java/
~/logs/
直接复制或打包:
# 复制单个日志
cp /opt/app/logs/app.log /tmp/app.log
# 打包导出
tar -czf java-logs.tar.gz /opt/app/logs/
然后用 scp 导出到本地:
scp root@centos_ip:/tmp/java-logs.tar.gz .
如果 Java 是通过 systemd 启动的:
journalctl -u your-java-service.service > java.log
导出最近 100 行:
journalctl -u your-java-service.service -n 100 > java.log
导出某时间段:
journalctl -u your-java-service.service --since "2024-01-01" --until "2024-01-02" > java.log
Tomcat 常见日志位置:
/var/log/tomcat/
/opt/tomcat/logs/
导出:
tar -czf tomcat-logs.tar.gz /opt/tomcat/logs/
包括:
catalina.outlocalhost.loghost-manager.logdocker logs java-container > java.log
docker logs --tail 500 java-container > java.log
docker logs -f java-container > java.log
(Ctrl+C 停止)
Java 崩溃时会生成:
hs_err_pid*.log
查找:
find / -name "hs_err_pid*.log"
导出:
cp hs_err_pid12345.log /tmp/
可以用这个命令搜:
find / -name "*.log" 2>/dev/null | grep -i java
或看 Java 进程打开的文件:
lsof -p <java_pid> | grep log
| 场景 | 导出方式 |
|---|---|
| 普通 Java 应用 | 打包 logs 目录 |
| systemd 服务 | journalctl |
| Tomcat | 打包 tomcat/logs |
| Docker | docker logs |
| JVM 崩溃 | hs_err_pid 文件 |
如果你能告诉我:
我可以给你更精确的命令。