Winston 记录器错误 logger.default.warn 不是函数

Winston logger error logger.default.warn is not a function

我将 Winston 记录器添加到我的 JS 应用程序,所有日志都有效,但没有警告。 我不知道为什么。

每次尝试使用 .warn(warning) 作为

时的错误
TypeError: _logger.default.warn is not a function

我的记录器是在这个辅助实用程序中完成的

import { config, createLogger, format, transports } from 'winston';

const { printf, combine, timestamp, colorize } = format;

// don't show console logs in test mode
const transport =
  process.env.NODE_ENV !== 'test' ? [new transports.Console()] : [];

export default createLogger({
  levels: config.syslog.levels,
  level: 'info',
  format: combine(
    timestamp(),
    printf((info) => `[${info.timestamp}][${info.level}]: ${info.message}`),
    colorize({ all: true })
  ),
  transports: [
    ...transport,
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'logs/application.log' }),
  ],
});

我在 if 语句下使用了

if ( validation === 'false' ) {
    log.warn('Twilio validation is not active!'); // Here the error occur
    return next();
  }

我尝试 google 在线,但根据文档应该可以,所以我不知道出了什么问题,因为它是唯一不起作用的日志。

createLogger() 根据选项中的 levels 对象创建日志级别方法。在 config.syslog.levels 中,级别称为 warning 而不是 warn

所以调用的方法应该是:log.warning('Twilio validation is not active!');

有一个 open issue 请求实施 warn() 作为系统日志警告级别的便捷方法。