UNPKG

nyx_server

Version:

Node内容发布

71 lines (59 loc) 1.88 kB
"use strict"; 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;