Format message before adding loggly metadata

Also removed a throw err inside an asynchronous callback.
This commit is contained in:
Grégoire Charvet 黑瓜 2014-07-04 14:03:08 +08:00
parent f44af56f9e
commit d65d053bc1

View File

@ -1,7 +1,9 @@
'use strict'; 'use strict';
var layouts = require('../layouts') var layouts = require('../layouts')
, loggly = require('loggly') , loggly = require('loggly')
, os = require('os'); , os = require('os')
, passThrough = layouts.messagePassThroughLayout;
/** /**
* Loggly Appender. Sends logging events to Loggly using node-loggly * Loggly Appender. Sends logging events to Loggly using node-loggly
@ -17,8 +19,8 @@ var layouts = require('../layouts')
function logglyAppender(config, layout) { function logglyAppender(config, layout) {
var client = loggly.createClient(config); var client = loggly.createClient(config);
var packageMessage = function (loggingEvent) { function packageMessage(loggingEvent) {
var BaseItem = function(level, msg) { function BaseItem(level, msg) {
this.level = level || loggingEvent.level.toString(); this.level = level || loggingEvent.level.toString();
this.category = loggingEvent.categoryName; this.category = loggingEvent.categoryName;
this.hostname = os.hostname().toString(); this.hostname = os.hostname().toString();
@ -26,48 +28,13 @@ function logglyAppender(config, layout) {
this.msg = msg; this.msg = msg;
}; };
var packageItem = function (item) { var formattedMsg = passThrough(loggingEvent);
if (item instanceof Error) return new BaseItem(formattedMsg);
return new BaseItem('ERROR', item.message);
if (['string', 'number', 'boolean'].indexOf(typeof item) > -1 )
return new BaseItem(undefined, item);
var obj = new BaseItem();
if (Array.isArray(item))
return item.unshift(obj); //add base object as first item
if (item && Object.prototype.toString.call(item) === '[object Object]') {
for (var key in item) {
if (item.hasOwnProperty(key)) {
obj[key] = item[key]; //don't do packageItem on nested items, because level, category and hostname are needed on top level items only.
}
}
}
return obj;
};
if (loggingEvent.data.length === 1) {
return packageItem(loggingEvent.data[0]);
}
//length >1
var msg = loggingEvent.data;
for (var i = 0, l = msg.length; i < l; i++) {
msg[i] = packageItem(msg[i]);
}
return msg;
}; };
return function(loggingEvent) { return function(loggingEvent) {
var a = layout ? layout(loggingEvent) : packageMessage(loggingEvent); var a = layout ? layout(loggingEvent) : packageMessage(loggingEvent);
//console.log('log now', a); client.log(a, config.tags);
client.log(a, config.tags, function(err, result) {
if (err) {
throw err;
}
});
}; };
} }
@ -81,4 +48,4 @@ function configure(config) {
exports.name = 'loggly'; exports.name = 'loggly';
exports.appender = logglyAppender; exports.appender = logglyAppender;
exports.configure = configure; exports.configure = configure;