温馨提示×

nodejs日志级别怎么改

小樊
45
2026-09-18 14:55:44
栏目: 编程语言

在 Node.js 里“日志级别怎么改”取决于你用的是哪个日志库。下面按常见情况说明:


一、Node 内置 console(最简单)

console 本身没有级别控制,只能自己封装:

const LOG_LEVEL = 'warn'; // debug | info | warn | error

const logger = {
  debug: (...args) => LOG_LEVEL === 'debug' && console.log(...args),
  info:  (...args) => ['debug','info'].includes(LOG_LEVEL) && console.log(...args),
  warn:  (...args) => ['debug','info','warn'].includes(LOG_LEVEL) && console.warn(...args),
  error: (...args) => console.error(...args),
};

二、Winston(最常用)

1️⃣ 创建 logger 时指定

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info', // debug | info | warn | error
  transports: [new winston.transports.Console()]
});

2️⃣ 运行中动态修改

logger.level = 'debug';

3️⃣ 通过环境变量

level: process.env.LOG_LEVEL || 'info'

运行:

LOG_LEVEL=debug node app.js

三、Pino(高性能)

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

运行时修改:

logger.level = 'debug';

或环境变量:

PINO_LEVEL=debug node app.js

四、log4js

const log4js = require('log4js');

log4js.configure({
  appenders: { out: { type: 'stdout' } },
  categories: {
    default: { appenders: ['out'], level: 'info' }
  }
});

const logger = log4js.getLogger();
logger.level = 'debug'; // 动态修改

五、NestJS(基于 Winston / Pino)

app.useLogger(new Logger('info'));

或在 LoggerModule 配置 level


六、常见日志级别(通用)

error > warn > info > debug > verbose

如果你能告诉我:

  • ✅ 用的是 哪个框架 / 日志库
  • ✅ 想 启动前改 还是 运行中改

我可以给你更精确的代码

0