Debian 上 Node.js 日志“缺失”通常不是 Node 本身不写日志,而是日志去哪儿了、谁在管日志、配置在哪里这几件事不清楚导致的。常见原因可以分为下面几类。
Node.js 不会自动写业务日志,必须代码里显式写:
console.log('start')
// 或
logger.info('xxx')
如果应用只跑逻辑、不打印,那自然“没日志”。
✅ 检查:
console.log / console.errorwinston / pino / bunyan 等日志库在 Debian 上,用 systemd 跑 Node 服务时,所有 console.log 都会进 journald,而不是文件。
/var/log/nodejs/ 是空的journalctl 里有journalctl -u your-node-service
journalctl -u your-node-service -f
✅ 这是正常行为,不是日志丢失
在 service 文件里改:
StandardOutput=append:/var/log/node/app.log
StandardError=append:/var/log/node/error.log
或让应用自己写文件。
Debian 默认有 logrotate,可能:
.gz查看:
ls -lh /var/log/
cat /etc/logrotate.d/nodejs
Node 以非 root 运行,但日志目录属于 root:
/var/log/nodejs root:root 755
Node 写不了 → 静默失败或只在 stderr 报错
✅ 修复:
chown -R node:node /var/log/nodejs
chmod 755 /var/log/nodejs
日志在:
~/.pm2/logs/
查看:
pm2 logs
日志在容器外:
docker logs <container>
例如:
DEBUG=* 时输出| 启动方式 | 日志位置 |
|---|---|
手动 node app.js |
终端 |
| systemd | journald |
| PM2 | ~/.pm2/logs |
| Docker | docker logs |
| 应用写文件 | 你配置的路径 |
logrotate如果你愿意,可以贴一下:
我可以直接帮你定位是哪一种原因。