“Ubuntu 上 Node.js 没有日志”这个问题通常不是 Node 本身的问题,而是日志去哪了 / 有没有产生 / 有没有被采集的问题。下面按常见原因给你系统梳理一下。
Node.js 默认不会自动产生运行日志,必须你自己写:
console.log('server started')
console.error('error occurred')
如果你只是:
app.listen(3000)
那除了崩溃,几乎不会有任何日志。
✅ 解决:确认代码里有 console.log / console.error / logger。
Ubuntu 18+ 基本都用 systemd,Node 的 console.log 会进入 journal,而不是文件。
journalctl -u your-node-service -f
如果直接运行:
node app.js
那日志在终端;
如果后台运行:
node app.js &
日志可能直接没了(被 shell 丢弃)。
✅ 解决:
node app.js >> /var/log/node.log 2>&1
pm2 logs
PM2 不会输出到终端,也不会自动写系统日志。
docker logs <container_id>
Node 日志在容器内 stdout,不会自动到 Ubuntu 文件系统。
例如:
logger.info('test') // 但 transport 没配置
或级别设太高:
level: 'error' // info 不会输出
✅ 检查:
fs.appendFileSync('/var/log/node.log', 'log')
如果 Node 以普通用户运行,会直接失败且无日志。
✅ 解决:
/home/user/logs常见:
启动即退出,自然“无日志”。
✅ 检查:
systemctl status your-node-service
journalctl -xe
journalctlpm2 logsdocker logs如果你愿意,可以把下面信息发我,我能直接帮你定位:
我可以直接告诉你“日志去哪了”。