在 Linux 上 JavaScript(Node.js)日志不输出,常见原因和排查思路如下,你可以逐项对照:
node app.js > /dev/null 2>&1
这样 console.log 完全看不到。
✅ 检查:
ps -ef | grep node
看启动命令是否有重定向。
很多项目用 winston / pino / log4js:
logger.add(new transports.File({ filename: 'app.log' }))
✅ 解决:
tail -f app.log
console.log('start')
process.exit(0)
在某些 Linux 环境下,缓冲区未刷新就退出了。
✅ 解决:
process.on('exit', () => {})
// 或不要立即 exit
console.error 但只看 stdoutnode app.js # 只看 stdout
而日志在 stderr。
✅ 解决:
node app.js 2>&1 | tee log.txt
nohup node app.js &
默认不输出到终端。
✅ systemd 查看日志:
journalctl -u your-service -f
例如:
logger.level = 'error'
logger.info('xxx') // 不输出
✅ 检查日志库配置。
✅ 在入口加:
console.log('server start')
docker logs -f container_id
# 1. 是否真的在运行
ps -ef | grep node
# 2. 是否有重定向
cat /proc/<pid>/cmdline
# 3. 看 stderr
node app.js 2>&1
# 4. 文件日志
ls -lh *.log
tail -f *.log
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一种原因。