javascript - Adakah terdapat cara dalam nodejs untuk mencetak output log4js dalam format JSON?
Saya sedang cuba mendapatkan output log4js dalam format JSON supaya saya boleh menjejaknya dengan mudah. Adakah terdapat cara yang perlu kita tetapkan dalam configuration.json supaya output yang dihasilkan oleh log4js berada dalam format JSON?
Pada masa ini saya sedang menggunakan konfigurasi berikut.
{
"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"
}
}
dan saya mendapat output dalam format berikut :
DEBUG: 1458562784032 : 2016-03-21T12:19:44.4444+00:00 : Data in request: : {
"action": "XXXXXXX",
"user": {
"username": "XXXX",
"id" : XXXX,
"pos" : XXXX
},
"version": 111
}
sebaliknya saya mahu ia dalam (Sesuatu seperti struktur berikut) :
{"id" : "1458562784032", "time" : "2016-03-21T12:19:44.4444+00:00", "message" : "Data dalam permintaan:", "data" : "{ "action": "XXXXXXX", "user": { "username": "XXXX", "id" : XXXX, "pos: : XXXX }, "version": 111 }" }
Mungkin ada sesuatu yang saya terlepas dalam konfigurasi.
Terima kasih kerana membantu.
Jawapan #1
Terdapat dua cara untuk melaksanakan isu ini sekarang, anda boleh menambah susun atur atau format corak anda sendiri.
Di bawah adalah contoh kod untuk menambah susun atur anda sendiri dengan 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');
Jawapan #2
Saya suka pendekatan @troy, walaupun anda mungkin terlepas pandang beberapa kes tepi data tertentu semasa memasukkan data ke dalam acara log anda.
Dua modul susun atur mudah yang tersedia di npm yang boleh mengendalikannya adalah:
- https://www.npmjs.com/package/log4js-layout-json
- https://www.npmjs.com/package/log4js-json-layout
