温馨提示×

怎样设置Node.js日志记录级别

小樊
53
2025-08-18 10:33:24
栏目: 编程语言

在 Node.js 中,可以使用第三方库 winston 或内置的 console 模块来设置日志记录级别。下面是两种方法的详细说明:

方法一:使用 winston

  1. 首先,确保已经安装了 winston 库。如果没有,请运行以下命令进行安装:
npm install winston
  1. 创建一个名为 logger.js 的文件,并在其中设置日志记录级别:
const winston = require('winston');

const logger = winston.createLogger({
  level: 'info', // 设置日志记录级别,可选值:'error', 'warn', 'info', 'verbose', 'debug', 'silly'
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.printf(({ timestamp, level, message }) => {
      return `${timestamp} ${level.toUpperCase()}: ${message}`;
    })
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
    new winston.transports.File({ filename: 'logs/combined.log' }),
  ],
});

module.exports = logger;
  1. 在需要记录日志的地方,引入 logger.js 并使用它记录日志:
const logger = require('./logger');

logger.debug('This is a debug message');
logger.info('This is an info message');
logger.warn('This is a warning message');
logger.error('This is an error message');

方法二:使用内置的 console 模块

Node.js 的内置 console 模块本身不支持设置日志记录级别,但可以通过自定义函数来实现:

const levels = {
  error: 0,
  warn: 1,
  info: 2,
  log: 3,
};

function log(level, message) {
  if (levels[level] >= levels.info) {
    console.log(`[${new Date().toISOString()}] ${level.toUpperCase()}: ${message}`);
  }
}

log('error', 'This is an error message');
log('warn', 'This is a warning message');
log('info', 'This is an info message');

在这个例子中,只有 info 级别及以上的日志会被记录。可以根据需要调整 levels 对象中的级别值来设置不同的日志记录级别。

0