|
|
|
@ -23,21 +23,42 @@ function deserializeLoggingEvent(loggingEvent) {
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createAppender(hookioOptions, actualAppender) {
|
|
|
|
|
function initHook(hookioOptions) {
|
|
|
|
|
var loggerHook;
|
|
|
|
|
if (hookioOptions.mode === 'master') {
|
|
|
|
|
// Start the master hook, handling the actual logging
|
|
|
|
|
loggerHook = new Logger({ name: hookioOptions.name, debug: hookioOptions.debug, actualAppender: actualAppender });
|
|
|
|
|
loggerHook = new Logger(hookioOptions);
|
|
|
|
|
} else {
|
|
|
|
|
// Start a worker, just emitting events for a master
|
|
|
|
|
loggerHook = new Hook({ name: hookioOptions.name, debug: hookioOptions.debug });
|
|
|
|
|
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;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var loggerEvent = hookioOptions.name + '::log';
|
|
|
|
|
return function log(loggingEvent) {
|
|
|
|
|
loggerHook.emit(loggerEvent, 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) {
|
|
|
|
@ -45,10 +66,9 @@ function configure(config) {
|
|
|
|
|
if (config.appender && config.mode === 'master') {
|
|
|
|
|
log4js.loadAppender(config.appender.type);
|
|
|
|
|
actualAppender = log4js.appenderMakers[config.appender.type](config.appender);
|
|
|
|
|
config.actualAppender = actualAppender;
|
|
|
|
|
}
|
|
|
|
|
delete config.appender;
|
|
|
|
|
delete config.type;
|
|
|
|
|
return createAppender(config, actualAppender);
|
|
|
|
|
return createAppender(config);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
exports.name = 'hookio';
|
|
|
|
|