You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Winston中配置多个互斥自定义日志级别?

实现Winston多Transport的互斥日志级别配置

当然可以实现这种精确的日志级别隔离!Winston本身提供了几种灵活的方式来控制不同Transport只记录特定的日志级别,甚至完全互斥的级别。下面我会分享两种常用的实战方案:

方案一:使用Format过滤器(最直观灵活)

这种方法不需要改动Winston默认的级别体系,直接给每个Transport添加一个过滤器格式,只允许指定级别的日志通过。这是实现互斥级别最直接的方式:

const winston = require('winston');
const { format } = winston;

// 创建基础Logger
const logger = winston.createLogger({
  format: format.combine(
    format.timestamp(), // 可选:添加时间戳
    format.json()
  )
});

// 仅记录error级别的Transport(写入errors.log)
logger.add(new winston.transports.File({
  filename: 'errors.log',
  format: format.combine(
    // 只允许error级别通过
    format.filter(info => info.level === 'error'),
    format.json()
  )
}));

// 仅记录info级别的Transport(不包含error,写入info.log)
logger.add(new winston.transports.File({
  filename: 'info.log',
  format: format.combine(
    // 只允许info级别通过
    format.filter(info => info.level === 'info'),
    format.json()
  )
}));

测试验证:

logger.error('数据库连接失败'); // 仅出现在errors.log中
logger.info('用户登录成功');    // 仅出现在info.log中

如果需要更复杂的级别分组(比如一个Transport记录info和warn),只需调整filter的条件即可:

format.filter(info => ['info', 'warn'].includes(info.level))

方案二:自定义级别权重+Filter(适合优先级调整场景)

如果你需要重新规划日志级别的优先级,同时实现隔离,可以自定义级别权重,再配合Filter实现完全互斥。比如想让error作为最高优先级但仅在专属Transport记录,info作为次优先级且不包含error:

const winston = require('winston');
const { format } = winston;

// 自定义级别权重:error权重最低(最严重),info次之
const customLevels = {
  levels: {
    error: 0,
    info: 1,
    warn: 2,
    debug: 3
  }
};

const logger = winston.createLogger({
  levels: customLevels.levels,
  format: format.combine(
    format.timestamp(),
    format.json()
  )
});

// 仅记录error级别
logger.add(new winston.transports.File({
  filename: 'errors.log',
  level: 'error'
}));

// 记录info及以下,但排除error
logger.add(new winston.transports.File({
  filename: 'info.log',
  level: 'info',
  format: format.combine(
    format.filter(info => info.level !== 'error'),
    format.json()
  )
}));

总结:如果只是需要简单的互斥级别记录,方案一的Filter Format是最推荐的,它不需要改动默认级别体系,代码清晰易维护。

内容的提问来源于stack exchange,提问作者Tommz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:23:27