在 CentOS 上 Java 程序日志为空,通常不是“日志没产生”,而是日志没写到你以为的地方,或进程根本没起来 / 被重定向吞掉了。下面按最常见原因逐步排查。
/dev/null常见于启动脚本:
java -jar app.jar > /dev/null 2>&1 &
✅ 解决:
java -jar app.jar > app.log 2>&1 &
nohup 但没指定输出文件nohup java -jar app.jar &
默认会写 nohup.out,但:
✅ 检查:
ls -l nohup.out
pwd
CentOS 7+ 基本都这样:
systemctl status your-app
journalctl -u your-app
✅ Java 的 System.out 会进 journal,不是文件
如果你用:
但:
logback.xml结果:
程序能跑,但“安静得像没日志”
✅ 检查:
find / -name "logback.xml"
find / -name "log4j2.xml"
例如:
<file>/var/log/app/app.log</file>
但:
/var/log/app 不存在
Java 不会自动建目录,直接失败且不报错或只报一次
✅ 解决:
mkdir -p /var/log/app
chown appuser:appuser /var/log/app
日志为空 ≠ 没日志
而是 进程直接退出
检查:
ps -ef | grep java
echo $?
看:
java -jar app.jar
如果这里有日志,说明:
问题在启动方式,不在代码
java -Dlogging.level.root=DEBUG -jar app.jar
getenforce
如果是 Enforcing:
ls -Z /var/log/app
✅ 临时验证:
setenforce 0
CentOS 上 Java 日志为空,99% 是“日志去错地方了”
你可以直接告诉我:
我可以帮你 精确定位是哪一步吞了日志。