trying out weak references, don't think they're going to help
This commit is contained in:
@@ -44,6 +44,7 @@
|
|||||||
* Website: http://log4js.berlios.de
|
* Website: http://log4js.berlios.de
|
||||||
*/
|
*/
|
||||||
var debug = require('./debug')('core')
|
var debug = require('./debug')('core')
|
||||||
|
, weak = require('weak')
|
||||||
, fs = require('fs')
|
, fs = require('fs')
|
||||||
, path = require('path')
|
, path = require('path')
|
||||||
, util = require('util')
|
, util = require('util')
|
||||||
@@ -51,7 +52,9 @@ var debug = require('./debug')('core')
|
|||||||
, levels = require('./levels')
|
, levels = require('./levels')
|
||||||
, LoggingEvent = require('./logger').LoggingEvent
|
, LoggingEvent = require('./logger').LoggingEvent
|
||||||
, Logger = require('./logger').Logger
|
, Logger = require('./logger').Logger
|
||||||
|
, loggerRefs = []
|
||||||
, categoryLevels = {}
|
, categoryLevels = {}
|
||||||
|
, globalLogLevel = null
|
||||||
, ALL_CATEGORIES = '[all]'
|
, ALL_CATEGORIES = '[all]'
|
||||||
, appenders = {}
|
, appenders = {}
|
||||||
, appenderMakers = {}
|
, 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.
|
* @param {String} categoryName name of category to log to.
|
||||||
* @return {Logger} instance of logger for the category
|
* @return {Logger} instance of logger for the category
|
||||||
* @static
|
* @static
|
||||||
*/
|
*/
|
||||||
function getLogger (categoryName) {
|
function getLogger (categoryName) {
|
||||||
|
var level, logger, ref;
|
||||||
|
|
||||||
// Use default logger if categoryName is not specified or invalid
|
// Use default logger if categoryName is not specified or invalid
|
||||||
if (typeof categoryName !== "string") {
|
if (typeof categoryName !== "string") {
|
||||||
categoryName = Logger.DEFAULT_CATEGORY;
|
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) {
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user