Add JSON logger

This commit is contained in:
m-messiah
2020-04-28 09:53:14 +03:00
parent a3b4517ab4
commit 05606cc4a5

View File

@ -35,6 +35,32 @@
var config = require('config');
var log4js = require('log4js');
// https://stackoverflow.com/a/36643588
var dateToJSONWithTZ = function (d) {
var timezoneOffsetInHours = -(d.getTimezoneOffset() / 60); //UTC minus local time
var sign = timezoneOffsetInHours >= 0 ? '+' : '-';
var leadingZero = (Math.abs(timezoneOffsetInHours) < 10) ? '0' : '';
//It's a bit unfortunate that we need to construct a new Date instance
//(we don't want _d_ Date instance to be modified)
var correctedDate = new Date(d.getFullYear(), d.getMonth(),
d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(),
d.getMilliseconds());
correctedDate.setHours(d.getHours() + timezoneOffsetInHours);
var iso = correctedDate.toISOString().replace('Z', '');
return iso + sign + leadingZero + Math.abs(timezoneOffsetInHours).toString() + ':00';
};
log4js.addLayout('json', function(config) {
return function(logEvent) {
logEvent['startTime'] = dateToJSONWithTZ(logEvent['startTime']);
logEvent['message'] = util.format(...logEvent['data']);
delete logEvent['data'];
return JSON.stringify(logEvent);
}
});
log4js.configure(config.get('log.filePath'));
var logger = log4js.getLogger('nodeJS');