在 Ubuntu 上 Node.js 程序“日志为空”是比较常见的问题,通常不是 Node 本身不输出,而是输出去向、启动方式或代码写入位置不对。下面按最常见原因逐一说明。
你可能在启动时是这样的:
node app.js > /dev/null 2>&1 &
或 systemd / pm2 / docker 中配置了日志重定向。
✅ 检查:
ps aux | grep node
看命令行里有没有 > file 或 2>&1
console.log,但你看错文件了console.log 输出的是 stdout,不是文件。
如果你以为会写日志文件,但其实没有:
console.log('start')
要看日志需要:
node app.js > app.log 2>&1
tail -f app.log
如果你用 PM2 启动:
pm2 start app.js
日志不会在终端显示。
✅ 正确查看方式:
pm2 logs
pm2 logs app
日志默认在:
~/.pm2/logs/
如果你是用 systemd 启动 Node:
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
console.log 会进 journald。
✅ 查看日志:
journalctl -u your-service -f
⚠️ 如果没有日志,可能是:
日志为空 ≠ 没日志,可能是:
✅ 手动前台运行测试:
node app.js
如果有错误,会立刻显示。
例如 winston / pino:
const logger = require('./logger')
// 但 logger 没配置 transport
结果:
✅ 检查日志库配置是否生效。
在 Docker 中:
docker logs <container>
如果你在容器内写文件,但在宿主机看,当然是空的。
请依次确认:
console.log 还是日志库?你可以告诉我:
node -v)我可以直接帮你改配置或贴最小可运行示例。