discord-baymax-bot/node_modules/log4js/lib/appenders/hipchat.js

91 lines
2.1 KiB
JavaScript
Raw Normal View History

2017-03-24 04:52:08 +00:00
"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);
}