在 Debian 上“Node.js 没有日志”通常不是 Node 本身的问题,而是运行方式 + 日志去向导致的。下面按最常见原因逐条说明。
systemd 启动 Node,但没看 journalDebian 10+ 基本都用 systemd 管理服务。
如果你的 Node 服务是通过:
systemctl start mynode
启动的,那么:
console.log() 不会出现在终端查看日志:
journalctl -u mynode -f
✅ 这是最常见“看起来没日志”的原因。
& 或 nohup 后台运行,输出被丢弃例如:
node app.js &
或:
nohup node app.js &
如果你:
日志就没了。
正确方式:
node app.js >> /var/log/node/app.log 2>&1 &
pm2 但没看 pm2 logs如果你用:
pm2 start app.js
日志不在终端,而在:
pm2 logs
或:
~/.pm2/logs/
很多人以为“Node 会自动记日志”,其实:
你需要:
console.log('server started')
或用:
app.use((req, res, next) => {
console.log(req.method, req.url)
next()
})
例如:
winston 设了 level: 'error'morgan 没挂载检查:
logger.level = 'debug'
如果你在 Debian 上跑 Docker:
docker logs 容器名
而不是看宿主机日志。
检查:
ps aux | grep node
看命令里有没有:
> /dev/null 2>&1
journalctl -u 服务名 -f
pm2 logs
console.log如果你愿意,可以贴一下:
我可以直接告诉你日志去哪了。