我正在使用Winston记录到文件。我想以人类可读的方式登录文件,并使用换行符和标签格式化JSON对象。
我正在尝试使用formatter
功能。
var winston = require('winston');
var moment = require('moment');
function formatter(args) {
var date = moment().format("D/MM/YYYY hh:mm:ss");
var msg = date + ' - ' + args.level + ' - ' + args.message + ' - ' + JSON.stringify(args.meta);
return msg;
}
var logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({
level: 'silly',
filename: __dirname + '/logs/test.log',
json: false,
formatter: formatter
})
]
});
logger.log('info', 'info 123', { some: 'json' });
输出:
16/12/2015 12:23:44 - info - info 123 - {"some":"json"}
如果我不使用JSON.stringify
,我只会获得[object Object]
。
我想要的是:
16/12/2015 12:23:44 - info - info 123 -
{
"some":"json"
}
Winston能以某种方式开箱即用吗?
...或者是否有人编写了一个函数,在字符串中找到{}
并添加换行符和标签..?
答案 0 :(得分:2)
喜欢这个吗?
var msg = date + ' - ' +
args.level + ' - ' +
args.message + ' - \n' + JSON.stringify(args.meta, null, 2);