在 Ubuntu 上 Node.js 日志“丢失”通常不是真的没了,而是写的地方和你找的地方不一致,或者进程被某种方式接管/重启导致输出没落地。下面按最常见原因给你梳理一下。
很多 Node 服务:
console.log('xxx')
默认输出到:
但不会自动写文件。
✅ 检查方式:
journalctl -u your-node-service -n 100
如果你用 systemd 启动 Node:
[Service]
ExecStart=/usr/bin/node app.js
日志只会进 journal,不会写文件。
✅ 解决:
journalctl -u your-service
StandardOutput=file:/var/log/node/app.lognode app.js > log.txt 2>&1 &
如果:
disown日志可能中断。
✅ 推荐:
nohup node app.js >> /var/log/node/app.log 2>&1 &
PM2 默认日志在:
~/.pm2/logs/
✅ 查看:
pm2 logs
pm2 show app
Ubuntu 默认会 rotate:
/var/log可能你看到的“丢失”其实是被轮转/删除。
✅ 检查:
ls -lh /var/log/
cat /etc/logrotate.d/node
Node 崩溃时:
process.on('uncaughtException')直接退出,什么都没留。
✅ 建议加:
process.on('uncaughtException', e => {
require('fs').appendFileSync('/var/log/node/err.log', e.stack + '\n')
})
你可以依次确认:
console.log 还是写文件?✅ 生产建议:
/var/log/yourapp/logrotatewinston / pino 管理日志如果你愿意,可以把:
发我,我可以直接帮你定位是哪一类问题。