UNPKG

log4js

Version:
86 lines (68 loc) 2.07 kB
'use strict'; const hipchat = require('hipchat-notifier'); /** @invoke as log4js.configure({ 'appenders': { 'hipchat': { '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' } }, categories: { default: { appenders: ['hipchat'], level: 'debug' }} }); var logger = log4js.getLogger('hipchat'); logger.warn('Test Warn message'); @invoke */ function hipchatNotifierResponseCallback(err) { if (err) { throw err; } } function hipchatAppender(config, layout) { const notifier = hipchat.make(config.hipchat_room, config.hipchat_token); return (loggingEvent) => { let 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 ? const layoutMessage = layout(loggingEvent); // dispatch hipchat api request, do not return anything // [overide hipchatNotifierResponseCallback] notifier[notifierFn](layoutMessage, config.hipchat_response_callback || hipchatNotifierResponseCallback); }; } function hipchatConfigure(config, layouts) { let layout = layouts.messagePassThroughLayout; if (config.layout) { layout = layouts.layout(config.layout.type, config.layout); } return hipchatAppender(config, layout); } module.exports.configure = hipchatConfigure;