如何从 winston@3 记录器输出中删除 [符号] 字段?

Posted

技术标签:

【中文标题】如何从 winston@3 记录器输出中删除 [符号] 字段?【英文标题】:How to remove [Symbol] fields from winston@3 logger output? 【发布时间】:2018-12-24 23:10:29 【问题描述】:

这是 winston@3 记录器的演示代码:

const  createLogger, format, transports  = require("winston")
const  combine, timestamp, prettyPrint  = format

const logger = createLogger(
  format: combine(timestamp(), prettyPrint( colorize: true ))
)

logger.add(new transports.Console())

logger.info("test message",  data:  a: 1, b: [1, 2, 3, 4], d: new Date()  )

打印出来:

 data:  a: 1, b: [ 1, 2, 3, 4 ], d: 2018-07-17T09:38:43.253Z ,
  level: 'info',
  message: 'test message',
  timestamp: '2018-07-17T09:38:43.253Z',
  [Symbol(level)]: 'info',
  [Symbol(splat)]:
   [  data:  a: 1, b: [ 1, 2, 3, 4 ], d: 2018-07-17T09:38:43.253Z   ] 

我想从输出中删除一些字段:[Symbot(level)]、[Symbot(splat)],所以我想有这样的输出:

 data:  a: 1, b: [ 1, 2, 3, 4 ], d: 2018-07-17T09:38:43.253Z ,
  level: 'info',
  message: 'test message',
  timestamp: '2018-07-17T09:38:43.253Z' 

【问题讨论】:

您找到解决方案了吗?同样的问题。 【参考方案1】:

您可以修改日志输出及其格式。这是官方文档:https://github.com/winstonjs/winston#streams-objectmode-and-info-objects

示例如下:

logger.add(winston.transports.Console, 
    level       : 'error',
    prettyPrint : true,
    silent      : false,
    timestamp   : true,
    json        : false
);

【讨论】:

它对我不起作用,它打印一个错误:throw new Error('Invalid transport, must be an object with a log method.'); 这是一个演示代码:` const winston = require("winston") const logger = winston.createLogger() logger。 add(winston.transports.Console, level: "error", prettyPrint: true, silent: false, timestamp: true, json: false ) logger.info("test message", data: a: 1, b : [1, 2, 3, 4], d: new Date() ) `

以上是关于如何从 winston@3 记录器输出中删除 [符号] 字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Winston 3 记录完整的堆栈跟踪?

如何从字符串输出中删除回车符?

如何从python的scrapy输出中删除'\ n'

温斯顿:尝试在没有传输的情况下写入日志 - 使用默认记录器

从热键中删除自动修饰符

如何从 jsp 页面中删除数据库记录?