nyx_server
Version:
Node内容发布
71 lines (59 loc) • 1.88 kB
JavaScript
var log4js = require('log4js');
var layouts = log4js.layouts
var stompit = require('stompit');
var Promise = require("bluebird");
function stompitAppender(stompName, connectOption, messageHeaders , layout, timezoneOffset) {
layout = layout || layouts.basicLayout;
var sendHeaders = {
'destination': messageHeaders.destination,
'content-type': messageHeaders.contentType
};
var getClient = null;
function _getClient(connectOpt) {
return new Promise(function (resolve, reject) {
stompit.connect(connectOpt, function (error, client) {
if (error) {
return reject(error);
}
client.on("error", function () {
getClient = _getClient(connectOpt);
})
return resolve(client);
});
})
}
getClient = _getClient(connectOption);
return function (loggingEvent) {
getClient.then(function (client) {
console.log(layout(loggingEvent, timezoneOffset))
send(client, sendHeaders, layout(loggingEvent, timezoneOffset))
}).catch(function(err){
console.log(err.stack);
getClient = _getClient(connectOption);
return true;
})
};
}
function send(client, headers, message) {
console.log(message);
var frame = client.send(headers);
frame.write(message);
frame.end();
}
function configure(config, options) {
console.log(arguments)
var layout;
if (config.layout) {
layout = layouts.layout(config.layout.type, config.layout);
}
return stompitAppender(
"",
config.connect,
config.messageHeaders,
layout,
config.timezoneOffset
);
}
exports.appender = stompitAppender;
exports.configure = configure;
;