温馨提示×

如何查看Nodejs日志

小樊
39
2026-07-07 09:08:00
栏目: 编程语言

查看 Node.js 日志的方法取决于你运行 Node.js 的方式以及是否使用了日志库。下面按常见场景给你一个完整指南。


一、最基础:直接查看控制台输出

1️⃣ 前台运行

node app.js

日志会直接输出在终端:

  • console.log()
  • console.error()

2️⃣ 后台运行(常见坑)

node app.js > logs.log 2>&1 &
  • > logs.log:标准输出
  • 2>&1:错误日志也写入
  • 查看日志:
tail -f logs.log

二、使用 PM2(生产环境推荐 ✅)

查看所有应用日志

pm2 logs

查看指定应用

pm2 logs app-name

实时查看

pm2 logs --lines 100

日志文件位置

~/.pm2/logs/

三、Docker 环境

查看容器日志

docker logs 容器ID
docker logs -f 容器ID

如果 Node 输出到 stdout

Docker 会自动收集 console.log / console.error


四、使用日志库(推荐 ✅)

常见日志库

  • winston(最常用)
  • pino(高性能)
  • morgan(HTTP 日志)

示例(winston)

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

logger.info('服务启动');
logger.error('出错了');

查看:

tail -f combined.log

五、异常和崩溃日志

未捕获异常

process.on('uncaughtException', err => {
  console.error('未捕获异常:', err);
});

Promise 异常

process.on('unhandledRejection', err => {
  console.error('Promise 异常:', err);
});

六、Web 框架日志

Express + morgan

app.use(morgan('combined'));

日志会输出到控制台或文件。


七、快速排查建议 ✅

场景 建议
本地调试 console.log
生产环境 PM2 + winston
Docker console.log → docker logs
报错找不到 查 stderr、PM2 logs

如果你愿意,可以告诉我:

  • ✅ 是否使用 PM2 / Docker
  • ✅ 是否 Express / NestJS / Koa
  • ✅ 报错信息

我可以给你更精确的查看方法

0