温馨提示×

怎么查看Nodejs运行日志

小樊
45
2026-07-07 10:29:09
栏目: 编程语言

查看 Node.js 的运行日志,取决于运行方式是否配置了日志系统。下面按常见场景给你一份实用指南。


一、直接运行 Node.js(最常见)

1️⃣ 控制台输出(stdout / stderr)

如果你是这样启动的:

node app.js

那么日志通常直接输出在终端:

  • console.log() → 标准输出
  • console.error() → 标准错误

✅ 查看方式:

  • 直接看终端
  • 或重定向到文件:
node app.js > logs/out.log 2> logs/error.log

2️⃣ 后台运行(nohup / &)

nohup node app.js > logs/app.log 2>&1 &

查看日志:

tail -f logs/app.log

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

查看日志

pm2 logs

查看指定应用:

pm2 logs app-name

实时查看:

pm2 logs --lines 100

日志文件位置

~/.pm2/logs/

包含:

  • app-name-out.log
  • app-name-error.log

三、Docker 中运行 Node.js

查看容器日志

docker logs 容器ID

实时查看:

docker logs -f 容器ID

✅ 前提:日志输出到 stdout / stderr(不要写到文件)


四、日志写到文件(代码中)

示例

const fs = require('fs');

fs.appendFileSync('logs/app.log', `[${new Date()}] 启动服务\n`);

查看:

tail -f logs/app.log

⚠️ 不推荐直接用 fs.writeFile,会覆盖内容


五、使用专业日志库(推荐 ✅)

常用库

  • winston(最常用)
  • pino(高性能和 JSON 日志)

winston 示例

const winston = require('winston');

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

logger.info('服务启动');
logger.error('发生错误');

日志文件:

logs/combined.log
logs/error.log

六、常见排查命令速查

# 实时查看日志
tail -f app.log

# 查看最近 100 行
tail -n 100 app.log

# 搜索错误
grep -i error app.log

# 查看 Node 进程
ps -ef | grep node

七、快速判断你该用哪种方式

场景 推荐方式
本地开发 console.log
服务器 PM2
容器 stdout + docker logs
生产环境 winston + PM2
排错 tail / grep

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

  • ✅ 你是 本地 / 服务器 / Docker
  • ✅ 是否使用 PM2 / Express / NestJS
  • ✅ 日志是 没输出 / 输出乱 / 想长期保存

我可以给你更精确的配置方案

0