更改winston中的“message”键名

6

我正在使用winston进行结构化日志记录,希望将在winston中的“message”键名更改为其他内容,例如“payload”。这是否可能?

例如:

{"message":{"x": 9},"level":"error"}

to

{"payload":{"x": 9},"level":"error"}

你找到答案了吗?我也对解决方案感兴趣 :) - undefined
1个回答

0
是的,这是可能的。您可以编写一个自定义格式化程序,就像这样:
const customFormat = winston.format(
  (info, opts = {}) => {
    const { message, level, ...otherProps } = info;
    return { ...otherProps, level, [opts.field || 'payload']: message };
  },
);

默认情况下,它将“message”字段重命名为“payload”,但您可以自定义预期的字段名称。
在您的日志记录器配置中,您只需要在JSON格式化程序之前应用您的格式化程序,例如:
const logger = winston.createLogger({
  level: process.env.NODE_ENV === 'development' ? 'debug' : 'info',
  format: winston.format.combine(
    customFormat({ field: 'content' }),
    winston.format.json(),
  ),
  transports: [new winston.transports.Console()],
});

module.exports = logger;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接