changed logger to not use events. everything is broken
This commit is contained in:
@@ -43,7 +43,7 @@
|
|||||||
* @static
|
* @static
|
||||||
* Website: http://log4js.berlios.de
|
* Website: http://log4js.berlios.de
|
||||||
*/
|
*/
|
||||||
var events = require('events')
|
var debug = require('./debug')('log4js-core')
|
||||||
, fs = require('fs')
|
, fs = require('fs')
|
||||||
, path = require('path')
|
, path = require('path')
|
||||||
, util = require('util')
|
, util = require('util')
|
||||||
@@ -51,9 +51,9 @@ var events = require('events')
|
|||||||
, levels = require('./levels')
|
, levels = require('./levels')
|
||||||
, LoggingEvent = require('./logger').LoggingEvent
|
, LoggingEvent = require('./logger').LoggingEvent
|
||||||
, Logger = require('./logger').Logger
|
, Logger = require('./logger').Logger
|
||||||
|
, categoryLevels = {}
|
||||||
, ALL_CATEGORIES = '[all]'
|
, ALL_CATEGORIES = '[all]'
|
||||||
, appenders = {}
|
, appenders = {}
|
||||||
, loggers = {}
|
|
||||||
, appenderMakers = {}
|
, appenderMakers = {}
|
||||||
, defaultConfig = {
|
, defaultConfig = {
|
||||||
appenders: [
|
appenders: [
|
||||||
@@ -75,25 +75,9 @@ function getLogger (categoryName) {
|
|||||||
categoryName = Logger.DEFAULT_CATEGORY;
|
categoryName = Logger.DEFAULT_CATEGORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
var appenderList;
|
debug("getLogger(" + categoryName + ")");
|
||||||
if (!loggers[categoryName]) {
|
|
||||||
// Create the logger for this name if it doesn't already exist
|
return new Logger(categoryName, levels.toLevel(categoryLevels[categoryName]) || null);
|
||||||
loggers[categoryName] = new Logger(categoryName);
|
|
||||||
if (appenders[categoryName]) {
|
|
||||||
appenderList = appenders[categoryName];
|
|
||||||
appenderList.forEach(function(appender) {
|
|
||||||
loggers[categoryName].addListener("log", appender);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (appenders[ALL_CATEGORIES]) {
|
|
||||||
appenderList = appenders[ALL_CATEGORIES];
|
|
||||||
appenderList.forEach(function(appender) {
|
|
||||||
loggers[categoryName].addListener("log", appender);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return loggers[categoryName];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -111,25 +95,12 @@ function addAppender () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
args.forEach(function(category) {
|
args.forEach(function(category) {
|
||||||
addAppenderToCategory(appender, category);
|
addAppenderToCategory(appender, category);
|
||||||
|
|
||||||
if (category === ALL_CATEGORIES) {
|
|
||||||
addAppenderToAllLoggers(appender);
|
|
||||||
} else if (loggers[category]) {
|
|
||||||
loggers[category].addListener("log", appender);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addAppenderToAllLoggers(appender) {
|
|
||||||
for (var logger in loggers) {
|
|
||||||
if (loggers.hasOwnProperty(logger)) {
|
|
||||||
loggers[logger].addListener("log", appender);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function addAppenderToCategory(appender, category) {
|
function addAppenderToCategory(appender, category) {
|
||||||
|
debug("adding appender " + appender + " to category " + category);
|
||||||
if (!appenders[category]) {
|
if (!appenders[category]) {
|
||||||
appenders[category] = [];
|
appenders[category] = [];
|
||||||
}
|
}
|
||||||
@@ -137,12 +108,8 @@ function addAppenderToCategory(appender, category) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function clearAppenders () {
|
function clearAppenders () {
|
||||||
|
debug("clearing appenders");
|
||||||
appenders = {};
|
appenders = {};
|
||||||
for (var logger in loggers) {
|
|
||||||
if (loggers.hasOwnProperty(logger)) {
|
|
||||||
loggers[logger].removeAllListeners("log");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function configureAppenders(appenderList, options) {
|
function configureAppenders(appenderList, options) {
|
||||||
@@ -163,13 +130,7 @@ function configureAppenders(appenderList, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function configureLevels(levels) {
|
function configureLevels(levels) {
|
||||||
if (levels) {
|
categoryLevels = levels || {};
|
||||||
for (var category in levels) {
|
|
||||||
if (levels.hasOwnProperty(category)) {
|
|
||||||
getLogger(category).setLevel(levels[category]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setGlobalLogLevel(level) {
|
function setGlobalLogLevel(level) {
|
||||||
@@ -185,6 +146,27 @@ function getDefaultLogger () {
|
|||||||
return getLogger(Logger.DEFAULT_CATEGORY);
|
return getLogger(Logger.DEFAULT_CATEGORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log event routing to appenders
|
||||||
|
* This would be a good place to implement category hierarchies/wildcards, etc
|
||||||
|
*/
|
||||||
|
function dispatch(event) {
|
||||||
|
debug("event is " + util.inspect(event));
|
||||||
|
if (appenders[event.category]) {
|
||||||
|
dispatchToCategory(event.category, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (appenders[ALL_CATEGORIES]) {
|
||||||
|
dispatchToCategory(ALL_CATEGORIES, event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function dispatchToCategory(category, event) {
|
||||||
|
appenders[category].forEach(function(appender) {
|
||||||
|
appender(event);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var configState = {};
|
var configState = {};
|
||||||
|
|
||||||
function loadConfigurationFile(filename) {
|
function loadConfigurationFile(filename) {
|
||||||
@@ -304,6 +286,7 @@ function loadAppender(appender) {
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
getLogger: getLogger,
|
getLogger: getLogger,
|
||||||
getDefaultLogger: getDefaultLogger,
|
getDefaultLogger: getDefaultLogger,
|
||||||
|
dispatch: dispatch,
|
||||||
|
|
||||||
addAppender: addAppender,
|
addAppender: addAppender,
|
||||||
loadAppender: loadAppender,
|
loadAppender: loadAppender,
|
||||||
@@ -323,5 +306,6 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//set ourselves up
|
//set ourselves up
|
||||||
|
debug("Starting configuration");
|
||||||
configure();
|
configure();
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
var levels = require('./levels')
|
var levels = require('./levels')
|
||||||
, util = require('util')
|
, util = require('util')
|
||||||
, events = require('events')
|
, log4js = require('./log4js')
|
||||||
, DEFAULT_CATEGORY = '[default]';
|
, DEFAULT_CATEGORY = '[default]';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -10,15 +10,13 @@ var levels = require('./levels')
|
|||||||
* @param {String} categoryName name of category
|
* @param {String} categoryName name of category
|
||||||
* @param {Log4js.Level} level level of message
|
* @param {Log4js.Level} level level of message
|
||||||
* @param {Array} data objects to log
|
* @param {Array} data objects to log
|
||||||
* @param {Log4js.Logger} logger the associated logger
|
|
||||||
* @author Seth Chisamore
|
* @author Seth Chisamore
|
||||||
*/
|
*/
|
||||||
function LoggingEvent (categoryName, level, data, logger) {
|
function LoggingEvent (categoryName, level, data) {
|
||||||
this.startTime = new Date();
|
this.startTime = new Date();
|
||||||
this.categoryName = categoryName;
|
this.categoryName = categoryName;
|
||||||
this.data = data;
|
this.data = data;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
this.logger = logger;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,7 +33,6 @@ function Logger (name, level) {
|
|||||||
this.setLevel(level);
|
this.setLevel(level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
util.inherits(Logger, events.EventEmitter);
|
|
||||||
Logger.DEFAULT_CATEGORY = DEFAULT_CATEGORY;
|
Logger.DEFAULT_CATEGORY = DEFAULT_CATEGORY;
|
||||||
Logger.prototype.level = levels.TRACE;
|
Logger.prototype.level = levels.TRACE;
|
||||||
|
|
||||||
@@ -50,8 +47,9 @@ Logger.prototype.removeLevel = function() {
|
|||||||
Logger.prototype.log = function() {
|
Logger.prototype.log = function() {
|
||||||
var args = Array.prototype.slice.call(arguments)
|
var args = Array.prototype.slice.call(arguments)
|
||||||
, logLevel = args.shift()
|
, logLevel = args.shift()
|
||||||
, loggingEvent = new LoggingEvent(this.category, logLevel, args, this);
|
, loggingEvent = new LoggingEvent(this.category, logLevel, args);
|
||||||
this.emit("log", loggingEvent);
|
|
||||||
|
log4js.dispatch(loggingEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
Logger.prototype.isLevelEnabled = function(otherLevel) {
|
Logger.prototype.isLevelEnabled = function(otherLevel) {
|
||||||
@@ -75,6 +73,5 @@ Logger.prototype.isLevelEnabled = function(otherLevel) {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
exports.LoggingEvent = LoggingEvent;
|
exports.LoggingEvent = LoggingEvent;
|
||||||
exports.Logger = Logger;
|
exports.Logger = Logger;
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
var vows = require('vows')
|
var vows = require('vows')
|
||||||
, assert = require('assert')
|
, assert = require('assert')
|
||||||
, levels = require('../lib/levels')
|
, levels = require('../lib/levels')
|
||||||
, Logger = require('../lib/logger').Logger;
|
, Logger = require('../lib/logger').Logger
|
||||||
|
, log4js = require('../lib/log4js');
|
||||||
|
|
||||||
vows.describe('../lib/logger').addBatch({
|
vows.describe('../lib/logger').addBatch({
|
||||||
'constructor with no parameters': {
|
'constructor with no parameters': {
|
||||||
@@ -53,5 +54,22 @@ vows.describe('../lib/logger').addBatch({
|
|||||||
assert.isTrue(logger.isErrorEnabled());
|
assert.isTrue(logger.isErrorEnabled());
|
||||||
assert.isTrue(logger.isFatalEnabled());
|
assert.isTrue(logger.isFatalEnabled());
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'log': {
|
||||||
|
topic: new Logger('testing'),
|
||||||
|
'should send log events to log4js': function(logger) {
|
||||||
|
var evt, original = log4js.dispatch;
|
||||||
|
log4js.dispatch = function(event) {
|
||||||
|
evt = event;
|
||||||
|
};
|
||||||
|
|
||||||
|
logger.log(levels.DEBUG, "cheese");
|
||||||
|
log4js.dispatch = original;
|
||||||
|
|
||||||
|
assert.equal(evt.categoryName, 'testing');
|
||||||
|
assert.equal(evt.level, levels.DEBUG);
|
||||||
|
assert.equal(evt.data[0], "cheese");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}).exportTo(module);
|
}).exportTo(module);
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ vows.describe('log4js').addBatch({
|
|||||||
'log events' : {
|
'log events' : {
|
||||||
topic: function(logger) {
|
topic: function(logger) {
|
||||||
var events = [];
|
var events = [];
|
||||||
logger.addListener("log", function (logEvent) { events.push(logEvent); });
|
log4js.addAppender(function (logEvent) { events.push(logEvent); }, "tests");
|
||||||
logger.debug("Debug event");
|
logger.debug("Debug event");
|
||||||
logger.trace("Trace event 1");
|
logger.trace("Trace event 1");
|
||||||
logger.trace("Trace event 2");
|
logger.trace("Trace event 2");
|
||||||
@@ -83,7 +83,7 @@ vows.describe('log4js').addBatch({
|
|||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
|
/*
|
||||||
'invalid configuration': {
|
'invalid configuration': {
|
||||||
'should throw an exception': function() {
|
'should throw an exception': function() {
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
@@ -509,4 +509,5 @@ vows.describe('log4js').addBatch({
|
|||||||
assert.ok(logger.error);
|
assert.ok(logger.error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}).export(module);
|
}).export(module);
|
||||||
|
|||||||
Reference in New Issue
Block a user