CentOS 上 Java 日志为空,通常不是“没产生日志”,而是日志没有正确输出到你认为的位置。下面按最常见原因 → 排查方法给你一个系统性的说明。
System.out / System.err但标准输出被重定向或丢弃了
nohup java -jar app.jar &
或
java -jar app.jar > /dev/null
✅ 结果:
catalina.out / app.log 为空✅ 正确写法:
nohup java -jar app.jar > app.log 2>&1 &
<File>/var/log/myapp/app.log</File>
但如果:
/var/log/myapp 不存在
或
该目录不可写
✅ 结果:
✅ 排查:
ls -ld /var/log/myapp
touch /var/log/myapp/test.log
<root level="error">
✅ 如果你只打 info / debug:
✅ 临时验证:
<root level="DEBUG">
logback.xml 放错位置log4j.properties 没在 classpath✅ 表现:
✅ 验证:
jar tf app.jar | grep logback
ExecStart=/usr/bin/java -jar /opt/app.jar
✅ 默认:
/var/log 当然是空的✅ 查看方式:
journalctl -u your-service -f
✅ 或改成文件输出:
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.log
docker logs 容器
✅ 如果你在容器里写 /var/log/app.log
但没挂载:
-v /host/log:/var/log
✅ 主机上当然看不到
logback 异步 appender✅ 解决:
immediateFlush=trueps -ef | grep java
如果是 systemd:
journalctl -u 服务名 -n 100
lsof -p <pid> | grep log
namei -l /var/log/myapp/app.log
java -jar app.jar 2>&1 | tee app.log
你可以直接贴出:
我可以 直接告诉你哪一行配置是问题根因 ✅