我正在尝试以JSON格式输出log4js,以便我可以轻松跟踪它。 我们必须在configuration.json中设置任何方式,以便log4js生成的输出将采用JSON格式吗?
目前我正在使用以下配置。
{
"appenders": [
{
"category": "XXXXX",
"type": "dateFile",
"filename": "XXXXXXXX",
"pattern": "-from-MM-dd",
"layout": {
"type": "messagePassThrough"
}
},
{
"category": "XXXXXXXXX",
"type": "dateFile",
"filename": "XXXXXXXX",
"pattern": "-from-MM-dd",
"layout": {
"type": "messagePassThrough"
}
}
],
"levels": {
"XXXXConfig": "INFO",
"XXXXXjectConfig" : "INFO"
}
}
我输出的格式如下:
DEBUG: 1458562784032 : 2016-03-21T12:19:44.4444+00:00 : Data in request: : {
"action": "XXXXXXX",
"user": {
"username": "XXXX",
"id" : XXXX,
"pos" : XXXX
},
"version": 111
}
相反,我想要它(像下面的结构):
{" ID" :" 1458562784032","时间" :" 2016-03-21T12:19:44.4444 + 00:00"," message" :"请求中的数据:","数据" :" { "行动":" XXXXXXX", "用户":{ "用户名":" XXXX", " ID" :XXXX, " pos :: XXXX }, "版本":111 }" }
可能是我在配置中遗漏了一些东西。
感谢您的帮助。
答案 0 :(得分:1)
现在有两种方法可以解决此问题,您可以add your own layouts或pattern format。
以下是添加自己的JSON
格式的布局的示例代码
const log4js = require('log4js');
log4js.addLayout('json', function(config) {
return function(logEvent) { return JSON.stringify(logEvent) + config.separator; }
});
log4js.configure({
appenders: {
out: { type: 'stdout', layout: { type: 'json', separator: ',' } }
},
categories: {
default: { appenders: ['out'], level: 'info' }
}
});
const logger = log4js.getLogger('json-test');
logger.info('this is just a test');
答案 1 :(得分:0)
我们可以将bunyan用于以JSON格式记录您的控制台日志的相同目的。 以下是节点的{n}链接:https://www.npmjs.com/package/bunyan。
即使您想使用log4js,也可以创建自己的模式并将日志文件写入JSON格式。
感谢。