温馨提示×

nodejs日志不输出啥原因

小樊
31
2026-09-26 18:33:37
栏目: 编程语言

Node.js 日志“不输出”一般不是 Node 本身的问题,而是输出方式、运行环境、日志级别、或者被覆盖/重定向导致的。下面按常见原因逐个排查。


一、最常见原因

1. 用了 console.log,但你看错地方

  • 前台运行:日志在终端
  • 后台 / PM2 / Docker:日志在文件或容器日志里

✅ 检查:

pm2 logs
docker logs 容器名

2. console.log 被注释 / 没执行到

例如:

if (false) {
  console.log('xxx')
}

✅ 在代码最前面加:

console.log('start')

3. 异步错误导致进程直接退出

async function main() {
  throw new Error('xxx')
}
main()
// 没 catch,可能什么都没打印

✅ 加:

process.on('uncaughtException', e => {
  console.error('uncaught', e)
})

二、日志级别问题(常见于框架)

4. 使用了 winston / pino / log4js,但级别太高

例如:

logger.level = 'error'
logger.info('xxx') // 不输出

✅ 设置为:

logger.level = 'debug'

5. 只输出了 error,但你在看 stdout

console.error('error') // 在 stderr

✅ 看 stderr:

node app.js 2>&1 | cat

三、运行环境问题

6. 输出被重定向了

node app.js > /dev/null

或:

process.stdout.write = () => {}

7. Docker 没加 -t

docker run node

✅ 改成:

docker run -it node

8. PM2 日志没开 / 被清空

pm2 delete all
pm2 start app.js
pm2 logs

四、代码层面的“假不输出”

9. 对象太大被截断

console.log({a: bigObj})

✅ 用:

console.log(JSON.stringify(obj, null, 2))

10. 用了 process.exit() 太早

console.log('a')
process.exit(0)
console.log('b') // 不会执行

五、快速自检清单 ✅

console.log('TEST') // 能看见吗?

process.on('uncaughtException', e => console.error(e))
process.on('unhandledRejection', e => console.error(e))

setTimeout(() => {
  console.log('timeout')
}, 1000)

如果你愿意,可以把:

  • 运行方式(node / pm2 / docker)
  • 用的日志库(如果有)
  • 一小段代码

发出来,我可以直接帮你定位是哪一类问题。

0 踩