温馨提示×

nodejs进程日志如何开启

小樊
38
2026-09-05 16:21:13
栏目: 编程语言

在 Node.js 中“开启进程日志”通常取决于你想记录什么日志以及运行方式。下面按常见场景给你一个清晰指南。


一、最基础的 console 日志(默认就有)

Node.js 本身就会输出:

console.log('info');
console.error('error');

运行:

node app.js

日志会直接打印到终端(stdout / stderr)。


二、将日志写入文件(常用)

方式 1:命令行重定向(最简单)

node app.js > app.log 2>&1
  • >:标准输出
  • 2>&1:错误也写入

后台运行:

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

三、使用日志库(推荐)

1️⃣ Winston(最常用)

npm install winston
const winston = require('winston');

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'app.log' })
  ]
});

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

2️⃣ Pino(高性能)

npm install pino
const pino = require('pino');
const logger = pino({ level: 'info' });

logger.info('hello');

四、PM2 管理进程日志(生产推荐)

安装

npm install pm2 -g

启动

pm2 start app.js

查看日志

pm2 logs

日志文件位置

~/.pm2/logs/

✅ PM2 自动记录:

  • stdout
  • stderr
  • 崩溃日志

五、Docker 中 Node 日志

Docker 默认收集 stdout:

docker logs <container_id>

确保:

  • 不要只写文件
  • 使用 console.log 或日志库输出到 stdout

六、调试日志(DEBUG 模式)

DEBUG=* node app.js

或在代码:

const debug = require('debug')('app');
debug('debug info');

七、常见建议(生产环境)

✅ 使用日志库(winston / pino)
✅ 日志分级(info / warn / error)
✅ 不写 console.log 到生产
✅ 日志文件按日期切割
✅ 用 PM2 / Docker 管理


如果你能告诉我:

  • 是否生产环境
  • 是否用 PM2 / Docker
  • 是否有框架(Express / Nest / Koa)

我可以给你更精确的配置示例

0