trying out weak references, don't think they're going to help

This commit is contained in:
Gareth Jones 2013-08-05 11:19:53 +10:00
parent 9c510f7705
commit 9897dcbc93

View File

@ -44,6 +44,7 @@
* Website: http://log4js.berlios.de
*/
var debug = require('./debug')('core')
, weak = require('weak')
, fs = require('fs')
, path = require('path')
, util = require('util')
@ -51,7 +52,9 @@ var debug = require('./debug')('core')
, levels = require('./levels')
, LoggingEvent = require('./logger').LoggingEvent
, Logger = require('./logger').Logger
, loggerRefs = []
, categoryLevels = {}
, globalLogLevel = null
, ALL_CATEGORIES = '[all]'
, appenders = {}
, appenderMakers = {}
@ -63,21 +66,31 @@ var debug = require('./debug')('core')
};
/**
* Get a logger instance. Instance is cached on categoryName level.
* Get a logger instance.
* @param {String} categoryName name of category to log to.
* @return {Logger} instance of logger for the category
* @static
*/
function getLogger (categoryName) {
var level, logger, ref;
// Use default logger if categoryName is not specified or invalid
if (typeof categoryName !== "string") {
categoryName = Logger.DEFAULT_CATEGORY;
}
debug("getLogger(" + categoryName + ")");
level = categoryLevels[categoryName];
return new Logger(categoryName, categoryLevels[categoryName] || null, dispatch);
if (globalLogLevel) {
level = globalLogLevel;
}
debug("getLogger(" + categoryName + ") - level is " + level);
logger = new Logger(categoryName, level || null, dispatch);
ref = weak(logger);
loggerRefs.push(ref);
return logger;
}
/**
@ -134,7 +147,16 @@ function configureLevels(levels) {
}
function setGlobalLogLevel(level) {
Logger.prototype.level = levels.toLevel(level, levels.TRACE);
//Logger.prototype.level = levels.toLevel(level, levels.TRACE);
globalLogLevel = level;
var workingRefs = [];
loggerRefs.forEach(function(logger) {
if (logger.setLevel) {
workingRefs.push(logger);
logger.setLevel(level);
}
});
loggerRefs = workingRefs;
}
/**