From ceffdf92e407bc53c2e660cd1de6cd9800303a21 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Sat, 16 Aug 2014 12:23:50 +1000 Subject: [PATCH] Removed hook.io appender, because hook.io does not build on systems without python --- lib/appenders/hookio.js | 76 ---------------- package.json | 1 - test/hookioAppender-test.js | 176 ------------------------------------ 3 files changed, 253 deletions(-) delete mode 100644 lib/appenders/hookio.js delete mode 100644 test/hookioAppender-test.js diff --git a/lib/appenders/hookio.js b/lib/appenders/hookio.js deleted file mode 100644 index 7821d79..0000000 --- a/lib/appenders/hookio.js +++ /dev/null @@ -1,76 +0,0 @@ -"use strict"; -var log4js = require('../log4js') -, layouts = require('../layouts') -, Hook = require('hook.io').Hook -, util = require('util'); - -var Logger = function createLogger(options) { - var self = this; - var actualAppender = options.actualAppender; - Hook.call(self, options); - self.on('hook::ready', function hookReady() { - self.on('*::' + options.name + '::log', function log(loggingEvent) { - deserializeLoggingEvent(loggingEvent); - actualAppender(loggingEvent); - }); - }); -}; -util.inherits(Logger, Hook); - -function deserializeLoggingEvent(loggingEvent) { - loggingEvent.startTime = new Date(loggingEvent.startTime); - loggingEvent.level.toString = function levelToString() { - return loggingEvent.level.levelStr; - }; -} - -function initHook(hookioOptions) { - var loggerHook; - if (hookioOptions.mode === 'master') { - // Start the master hook, handling the actual logging - loggerHook = new Logger(hookioOptions); - } else { - // Start a worker, just emitting events for a master - loggerHook = new Hook(hookioOptions); - } - loggerHook.start(); - return loggerHook; -} - -function getBufferedHook(hook, eventName) { - var hookBuffer = []; - var hookReady = false; - hook.on('hook::ready', function emptyBuffer() { - hookBuffer.forEach(function logBufferItem(loggingEvent) { - hook.emit(eventName, loggingEvent); - }); - hookReady = true; - }); - - return function log(loggingEvent) { - if (hookReady) { - hook.emit(eventName, loggingEvent); - } else { - hookBuffer.push(loggingEvent); - } - }; -} - -function createAppender(hookioOptions) { - var loggerHook = initHook(hookioOptions); - var loggerEvent = hookioOptions.name + '::log'; - return getBufferedHook(loggerHook, loggerEvent); -} - -function configure(config) { - var actualAppender; - if (config.appender && config.mode === 'master') { - log4js.loadAppender(config.appender.type); - actualAppender = log4js.appenderMakers[config.appender.type](config.appender); - config.actualAppender = actualAppender; - } - return createAppender(config); -} - -exports.appender = createAppender; -exports.configure = configure; diff --git a/package.json b/package.json index 6718f46..5a7bf14 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "devDependencies": { "vows": "0.7.0", "sandboxed-module": "0.1.3", - "hook.io": "0.8.10", "underscore": "1.2.1" }, "browser": { diff --git a/test/hookioAppender-test.js b/test/hookioAppender-test.js deleted file mode 100644 index d1c00af..0000000 --- a/test/hookioAppender-test.js +++ /dev/null @@ -1,176 +0,0 @@ -"use strict"; -var vows = require('vows') -, assert = require('assert') -, sandbox = require('sandboxed-module'); - -function fancyResultingHookioAppender(hookNotReady) { - var emitHook = !hookNotReady - , result = { ons: {}, emissions: {}, logged: [], configs: [] }; - - var fakeLog4Js = { - appenderMakers: {} - }; - fakeLog4Js.loadAppender = function (appender) { - fakeLog4Js.appenderMakers[appender] = function (config) { - result.actualLoggerConfig = config; - return function log(logEvent) { - result.logged.push(logEvent); - }; - }; - }; - - var fakeHookIo = { Hook: function(config) { result.configs.push(config); } }; - fakeHookIo.Hook.prototype.start = function () { - result.startCalled = true; - }; - fakeHookIo.Hook.prototype.on = function (eventName, functionToExec) { - result.ons[eventName] = { functionToExec: functionToExec }; - if (emitHook && eventName === 'hook::ready') { - functionToExec(); - } - }; - fakeHookIo.Hook.prototype.emit = function (eventName, data) { - result.emissions[eventName] = result.emissions[eventName] || []; - result.emissions[eventName].push({data: data}); - var on = '*::' + eventName; - if (eventName !== 'hook::ready' && result.ons[on]) { - result.ons[on].callingCount = - result.ons[on].callingCount ? result.ons[on].callingCount += 1 : 1; - result.ons[on].functionToExec(data); - } - }; - - return { theResult: result, - theModule: sandbox.require('../lib/appenders/hookio', { - requires: { - '../log4js': fakeLog4Js, - 'hook.io': fakeHookIo - } - }) - }; -} - - -vows.describe('log4js hookioAppender').addBatch({ - 'master': { - topic: function() { - var fancy = fancyResultingHookioAppender(); - var logger = fancy.theModule.configure( - { - name: 'ohno', - mode: 'master', - 'hook-port': 5001, - appender: { type: 'file' } - } - ); - logger( - { - level: { levelStr: 'INFO' }, - data: "ALRIGHTY THEN", - startTime: '2011-10-27T03:53:16.031Z' - } - ); - logger( - { - level: { levelStr: 'DEBUG' }, - data: "OH WOW", - startTime: '2011-10-27T04:53:16.031Z' - } - ); - return fancy.theResult; - }, - - 'should write to the actual appender': function (result) { - assert.isTrue(result.startCalled); - assert.equal(result.configs.length, 1); - assert.equal(result.configs[0]['hook-port'], 5001); - assert.equal(result.logged.length, 2); - assert.equal(result.emissions['ohno::log'].length, 2); - assert.equal(result.ons['*::ohno::log'].callingCount, 2); - }, - - 'data written should be formatted correctly': function (result) { - assert.equal(result.logged[0].level.toString(), 'INFO'); - assert.equal(result.logged[0].data, 'ALRIGHTY THEN'); - assert.isTrue(typeof(result.logged[0].startTime) === 'object'); - assert.equal(result.logged[1].level.toString(), 'DEBUG'); - assert.equal(result.logged[1].data, 'OH WOW'); - assert.isTrue(typeof(result.logged[1].startTime) === 'object'); - }, - - 'the actual logger should get the right config': function (result) { - assert.equal(result.actualLoggerConfig.type, 'file'); - } - }, - 'worker': { - 'should emit logging events to the master': { - topic: function() { - var fancy = fancyResultingHookioAppender(); - var logger = fancy.theModule.configure({ - name: 'ohno', - mode: 'worker', - appender: { type: 'file' } - }); - logger({ - level: { levelStr: 'INFO' }, - data: "ALRIGHTY THEN", - startTime: '2011-10-27T03:53:16.031Z' - }); - logger({ - level: { levelStr: 'DEBUG' }, - data: "OH WOW", - startTime: '2011-10-27T04:53:16.031Z' - }); - return fancy.theResult; - }, - - 'should not write to the actual appender': function (result) { - assert.isTrue(result.startCalled); - assert.equal(result.logged.length, 0); - assert.equal(result.emissions['ohno::log'].length, 2); - assert.isUndefined(result.ons['*::ohno::log']); - } - } - }, - 'when hook not ready': { - topic: function() { - var fancy = fancyResultingHookioAppender(true) - , logger = fancy.theModule.configure({ - name: 'ohno', - mode: 'worker' - }); - - logger({ - level: { levelStr: 'INFO' }, - data: "something", - startTime: '2011-10-27T03:45:12.031Z' - }); - return fancy; - }, - 'should buffer the log events': function(fancy) { - assert.isUndefined(fancy.theResult.emissions['ohno::log']); - }, - }, - 'when hook ready': { - topic: function() { - var fancy = fancyResultingHookioAppender(true) - , logger = fancy.theModule.configure({ - name: 'ohno', - mode: 'worker' - }); - - logger({ - level: { levelStr: 'INFO' }, - data: "something", - startTime: '2011-10-27T03:45:12.031Z' - }); - - fancy.theResult.ons['hook::ready'].functionToExec(); - return fancy; - }, - 'should emit the buffered events': function(fancy) { - assert.equal(fancy.theResult.emissions['ohno::log'].length, 1); - } - } - -}).exportTo(module);