在 CentOS 上导出 Java 日志,常见场景有几种,下面按最常用方式给你说明,你可以对照自己的情况选择。
如果 Java 应用使用了 Logback / Log4j / Log4j2,日志通常输出到指定目录,比如:
/opt/app/logs/
/var/log/your-app/
~/logs/
查看配置文件确认路径:
# Logback
logback.xml
# Log4j2
log4j2.xml
# Log4j
log4j.properties
ls -lh /opt/app/logs
cp /opt/app/logs/app.log /tmp/app.log
或使用 scp 导出到本地:
scp /opt/app/logs/app.log user@local_ip:/home/user/
tail 导出tail -n 1000 /opt/app/logs/app.log > app_last_1000.log
实时导出:
tail -f /opt/app/logs/app.log > app_realtime.log
如果 Java 是用 nohup 启动的:
nohup java -jar app.jar > app.log 2>&1 &
查看或导出:
cat app.log
tail -f app.log
docker ps
docker logs container_id > app.log
实时导出:
docker logs -f container_id > app.log
如果是挂载目录:
/var/lib/docker/volumes/xxx/_data/
java -Xlog:gc*:file=gc.log ...
导出:
cp gc.log /tmp/gc.log
查看:
tail -f gc.log
logrotate(推荐)/etc/logrotate.d/your-app
示例:
/opt/app/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
}
ps -ef | grep java
查看启动参数中是否有:
-Dlogging.file.name
-Dlogback.configurationFile
du -sh /opt/app/logs
清理旧日志:
find /opt/app/logs -name "*.log" -mtime +7 -delete
| 场景 | 推荐方式 |
|---|---|
| 普通 Java 应用 | 直接 cp 日志目录 |
| 实时日志 | tail -f |
| Docker | docker logs |
| 标准输出 | nohup.out |
| 自动管理 | logrotate |
如果你愿意,可以告诉我:
我可以给你精确到命令级别的方案。