Merge pull request #175 from devotis/master
Loggly appender should not make use of any layout
This commit is contained in:
commit
b2edbb1146
@ -1,6 +1,6 @@
|
|||||||
"use strict";
|
'use strict';
|
||||||
var layouts = require("../layouts")
|
var layouts = require('../layouts')
|
||||||
, loggly = require("loggly")
|
, loggly = require('loggly')
|
||||||
, os = require('os');
|
, os = require('os');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -12,15 +12,62 @@ var layouts = require("../layouts")
|
|||||||
* subdomain: 'your-subdomain',
|
* subdomain: 'your-subdomain',
|
||||||
* tags: ['loggly-tag1', 'loggly-tag2', .., 'loggly-tagn']
|
* tags: ['loggly-tag1', 'loggly-tag2', .., 'loggly-tagn']
|
||||||
* }
|
* }
|
||||||
* @param layout a function that takes a logevent and returns a string (defaults to basicLayout).
|
* @param layout a function that takes a logevent and returns a string (defaults to objectLayout).
|
||||||
*/
|
*/
|
||||||
function logglyAppender(config, layout) {
|
function logglyAppender(config, layout) {
|
||||||
layout = layout || layouts.basicLayout;
|
|
||||||
|
|
||||||
var client = loggly.createClient(config);
|
var client = loggly.createClient(config);
|
||||||
|
|
||||||
|
var packageMessage = function (loggingEvent) {
|
||||||
|
var BaseItem = function(level, msg) {
|
||||||
|
this.level = level || loggingEvent.level.toString();
|
||||||
|
this.category = loggingEvent.categoryName;
|
||||||
|
this.hostname = os.hostname().toString();
|
||||||
|
if (typeof msg !== 'undefined')
|
||||||
|
this.msg = msg;
|
||||||
|
};
|
||||||
|
|
||||||
|
var packageItem = function (item) {
|
||||||
|
if (item instanceof Error)
|
||||||
|
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) {
|
||||||
client.log(layout(loggingEvent), config.tags);
|
var a = layout ? layout(loggingEvent) : packageMessage(loggingEvent);
|
||||||
|
//console.log('log now', a);
|
||||||
|
client.log(a, config.tags, function(err, result) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,6 +79,6 @@ function configure(config) {
|
|||||||
return logglyAppender(config, layout);
|
return logglyAppender(config, layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.name = "loggly";
|
exports.name = 'loggly';
|
||||||
exports.appender = logglyAppender;
|
exports.appender = logglyAppender;
|
||||||
exports.configure = configure;
|
exports.configure = configure;
|
Loading…
Reference in New Issue
Block a user