我想我的winston 2.2.0配置中缺少一些东西,因为我无法正确输出数组。通过正确,我的意思是console.log
输出。
我的配置仅保留默认transports.console
。
如果只给记录器一个参数,那么首先显示带有索引的数组,如果给出两个,则正确打印数组。
示例:
logger.debug ([ 1,2 ])
> 0=1, 1=2
logger.debug ( [ 1,2], '')
> [ 1, 2 ] ''
logger.debug ({x:1,y:2,z:{i:3}})
> x=1, y=2, i=3
打开prettyPrint:true
会使json对象正确显示,但添加额外的颜色,回车并仍显示带索引的数组。
答案 0 :(得分:1)
不理想,但可能仍然有用:
var logger = new winston.Logger({
transports : [ new winston.transports.Console({}) ],
rewriters : [
function (level, msg, meta) {
return meta ? JSON.stringify(meta) : meta;
}
]
});
答案 1 :(得分:0)
这种解决方法看起来很讨厌并且排除了对具有多个参数的记录器的调用,但它可以工作:
logger.dbg = function() {
if(arguments.length>1) this.warn("more than one arg given to dbg()")
if(Array.isArray(arguments[0]))
logger.debug('%j',arguments[0])
else
logger.debug(arguments[0],'')
}
结果:
logger.dbg([ 1, 2, {x:1} ])
logger.dbg({x:1,z:2, s:[1,]})
logger.dbg("AAA")
logger.dbg(undefined)
logger.dbg(null)
logger.dbg([])
输出:
debug: [log.js:131] [1,2,{"x":1}]
debug: [log.js:132] { x: 1, z: 2, s: [ 1 ] }
debug: [log.js:133] AAA
debug: [log.js:134] undefined
debug: [log.js:135] null
debug: [log.js:136] []