91 lines
2.1 KiB
JavaScript
91 lines
2.1 KiB
JavaScript
"use strict";
|
|
|
|
var hipchat = require('hipchat-notifier');
|
|
var layouts = require('../layouts');
|
|
|
|
exports.name = 'hipchat';
|
|
exports.appender = hipchatAppender;
|
|
exports.configure = hipchatConfigure;
|
|
|
|
/**
|
|
@invoke as
|
|
|
|
log4js.configure({
|
|
"appenders": [
|
|
{
|
|
"type" : "hipchat",
|
|
"hipchat_token": "< User token with Notification Privileges >",
|
|
"hipchat_room": "< Room ID or Name >",
|
|
// optionl
|
|
"hipchat_from": "[ additional from label ]",
|
|
"hipchat_notify": "[ notify boolean to bug people ]",
|
|
"hipchat_host" : "api.hipchat.com"
|
|
}
|
|
]
|
|
});
|
|
|
|
var logger = log4js.getLogger("hipchat");
|
|
logger.warn("Test Warn message");
|
|
|
|
@invoke
|
|
*/
|
|
|
|
function hipchatNotifierResponseCallback(err, response, body){
|
|
if(err) {
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
function hipchatAppender(config) {
|
|
|
|
var notifier = hipchat.make(config.hipchat_room, config.hipchat_token);
|
|
|
|
// @lint W074 This function's cyclomatic complexity is too high. (10)
|
|
return function(loggingEvent){
|
|
|
|
var notifierFn;
|
|
|
|
notifier.setRoom(config.hipchat_room);
|
|
notifier.setFrom(config.hipchat_from || '');
|
|
notifier.setNotify(config.hipchat_notify || false);
|
|
|
|
if(config.hipchat_host) {
|
|
notifier.setHost(config.hipchat_host);
|
|
}
|
|
|
|
switch (loggingEvent.level.toString()) {
|
|
case "TRACE":
|
|
case "DEBUG":
|
|
notifierFn = "info";
|
|
break;
|
|
case "WARN":
|
|
notifierFn = "warning";
|
|
break;
|
|
case "ERROR":
|
|
case "FATAL":
|
|
notifierFn = "failure";
|
|
break;
|
|
default:
|
|
notifierFn = "success";
|
|
}
|
|
|
|
// @TODO, re-work in timezoneOffset ?
|
|
var layoutMessage = config.layout(loggingEvent);
|
|
|
|
// dispatch hipchat api request, do not return anything
|
|
// [overide hipchatNotifierResponseCallback]
|
|
notifier[notifierFn](layoutMessage, config.hipchat_response_callback ||
|
|
hipchatNotifierResponseCallback);
|
|
};
|
|
}
|
|
|
|
function hipchatConfigure(config) {
|
|
var layout;
|
|
|
|
if (!config.layout) {
|
|
config.layout = layouts.messagePassThroughLayout;
|
|
}
|
|
|
|
return hipchatAppender(config, layout);
|
|
}
|