温馨提示×

Nodejs日志级别怎么调整

小樊
43
2026-07-07 10:19:03
栏目: 编程语言

Node.js 里,“日志级别”通常取决于你用的日志库,而不是 Node.js 本身。下面按常见情况说明如何调整。


一、如果你用的是 console(最直接,但不推荐生产)

console 本身没有日志级别概念,只能通过环境变量或手动控制:

const LOG_LEVEL = process.env.LOG_LEVEL || 'info';

function log(level, msg) {
  const levels = { error: 0, warn: 1, info: 2, debug: 3 };
  if (levels[level] <= levels[LOG_LEVEL]) {
    console[level](msg);
  }
}

log('debug', 'debug msg');

二、主流日志库级别调整方式

✅ 1. Winston(最常用)

安装

npm install winston

设置日志级别

const winston = require('winston');

const logger = winston.createLogger({
  level: process.env.LOG_LEVEL || 'info', // 关键配置
  format: winston.format.simple(),
  transports: [new winston.transports.Console()]
});

logger.error('error');
logger.warn('warn');
logger.info('info');
logger.debug('debug');

支持级别(默认)

error > warn > info > http > verbose > debug > silly

启动时调整

LOG_LEVEL=debug node app.js

✅ 2. Pino(高性能,推荐生产)

安装

npm install pino

设置级别

const pino = require('pino');

const logger = pino({
  level: process.env.LOG_LEVEL || 'info'
});

logger.info('info');
logger.debug('debug');

支持的级别

fatal > error > warn > info > debug > trace

调整方式

LOG_LEVEL=debug node app.js

✅ 3. Morgan(HTTP 请求日志)

Morgan 没有标准日志级别,但可以通过 NODE_ENV 控制:

const morgan = require('morgan');
app.use(morgan('dev')); // dev / combined / common / short / tiny

三、通过环境变量统一控制(最佳实践 ✅)

# 生产环境
LOG_LEVEL=warn

# 测试 / 本地
LOG_LEVEL=debug

并在代码中读取:

level: process.env.LOG_LEVEL

四、常见日志级别对照表

场景 推荐级别
生产环境 warn / error
测试环境 info
本地开发 debug
性能敏感 pino + warn

五、我可以进一步帮你

你可以告诉我:

  • ✅ 用的是哪个日志库(winston / pino / 其他)
  • ✅ 是否在 NestJS / Express / Koa
  • ✅ 是否需要输出到文件 / ELK / 容器日志

我可以直接给你可复制的完整配置示例

0