在 Ubuntu 上 Node.js 应用日志“丢失/看不到”,通常不是真的没产生,而是输出位置、进程管理、或日志轮转导致的。下面按最常见原因逐一排查:
console.log()pm2 / systemd / docker 启动日志其实在:
~/.pm2/logs/xxx-out.logjournalctl -u your-servicedocker logs 容器名✅ 排查:
# pm2
pm2 logs
# systemd
journalctl -u your-node-service -f
# 直接运行
node app.js > app.log 2>&1
/var/log 里没有日志console.log 看不到[Service]
ExecStart=/usr/bin/node /opt/app/app.js
StandardOutput=journal
StandardError=journal
查看:
journalctl -u your-service -f
Ubuntu 默认会 logrotate
可能情况:
rmcopytruncate 搞丢✅ 检查:
ls -lh /var/log/
cat /etc/logrotate.d/your-app
Node.js 是 异步写入
process.exit() 太早✅ 建议:
process.exit(0)Node 没权限写日志目录:
Error: EACCES: permission denied
✅ 检查:
ls -ld /var/log/yourapp
whoami
find / -name "*.log" -mmin -30
pm2 start app.js
pm2 logs
journalctl -u node-app -f
const fs = require('fs')
fs.appendFileSync('/var/log/node/app.log', log)
可以告诉我:
console.log 还是写文件我可以直接帮你定位是哪一类问题。