|
|
|
@ -50,7 +50,6 @@ var events = require('events')
|
|
|
|
|
, util = require('util')
|
|
|
|
|
, layouts = require('./layouts')
|
|
|
|
|
, levels = require('./levels')
|
|
|
|
|
, consoleAppender = require('./appenders/console').appender
|
|
|
|
|
, DEFAULT_CATEGORY = '[default]'
|
|
|
|
|
, ALL_CATEGORIES = '[all]'
|
|
|
|
|
, appenders = {}
|
|
|
|
@ -63,6 +62,76 @@ var events = require('events')
|
|
|
|
|
replaceConsole: false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Models a logging event.
|
|
|
|
|
* @constructor
|
|
|
|
|
* @param {String} categoryName name of category
|
|
|
|
|
* @param {Log4js.Level} level level of message
|
|
|
|
|
* @param {Array} data objects to log
|
|
|
|
|
* @param {Log4js.Logger} logger the associated logger
|
|
|
|
|
* @author Seth Chisamore
|
|
|
|
|
*/
|
|
|
|
|
function LoggingEvent (categoryName, level, data, logger) {
|
|
|
|
|
this.startTime = new Date();
|
|
|
|
|
this.categoryName = categoryName;
|
|
|
|
|
this.data = data;
|
|
|
|
|
this.level = level;
|
|
|
|
|
this.logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Logger to log messages.
|
|
|
|
|
* use {@see Log4js#getLogger(String)} to get an instance.
|
|
|
|
|
* @constructor
|
|
|
|
|
* @param name name of category to log to
|
|
|
|
|
* @author Stephan Strittmatter
|
|
|
|
|
*/
|
|
|
|
|
function Logger (name, level) {
|
|
|
|
|
this.category = name || DEFAULT_CATEGORY;
|
|
|
|
|
|
|
|
|
|
if (! this.level) {
|
|
|
|
|
this.__proto__.level = levels.TRACE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
util.inherits(Logger, events.EventEmitter);
|
|
|
|
|
|
|
|
|
|
Logger.prototype.setLevel = function(level) {
|
|
|
|
|
this.level = levels.toLevel(level, this.level || levels.TRACE);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype.removeLevel = function() {
|
|
|
|
|
delete this.level;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype.log = function() {
|
|
|
|
|
var args = Array.prototype.slice.call(arguments)
|
|
|
|
|
, logLevel = args.shift()
|
|
|
|
|
, loggingEvent = new LoggingEvent(this.category, logLevel, args, this);
|
|
|
|
|
this.emit("log", loggingEvent);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype.isLevelEnabled = function(otherLevel) {
|
|
|
|
|
return this.level.isLessThanOrEqualTo(otherLevel);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
['Trace','Debug','Info','Warn','Error','Fatal'].forEach(
|
|
|
|
|
function(levelString) {
|
|
|
|
|
var level = levels.toLevel(levelString);
|
|
|
|
|
Logger.prototype['is'+levelString+'Enabled'] = function() {
|
|
|
|
|
return this.isLevelEnabled(level);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype[levelString.toLowerCase()] = function () {
|
|
|
|
|
if (this.isLevelEnabled(level)) {
|
|
|
|
|
var args = Array.prototype.slice.call(arguments);
|
|
|
|
|
args.unshift(level);
|
|
|
|
|
Logger.prototype.log.apply(this, args);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get a logger instance. Instance is cached on categoryName level.
|
|
|
|
|
* @param {String} categoryName name of category to log to.
|
|
|
|
@ -165,75 +234,6 @@ function configureLevels(levels) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Models a logging event.
|
|
|
|
|
* @constructor
|
|
|
|
|
* @param {String} categoryName name of category
|
|
|
|
|
* @param {Log4js.Level} level level of message
|
|
|
|
|
* @param {Array} data objects to log
|
|
|
|
|
* @param {Log4js.Logger} logger the associated logger
|
|
|
|
|
* @author Seth Chisamore
|
|
|
|
|
*/
|
|
|
|
|
function LoggingEvent (categoryName, level, data, logger) {
|
|
|
|
|
this.startTime = new Date();
|
|
|
|
|
this.categoryName = categoryName;
|
|
|
|
|
this.data = data;
|
|
|
|
|
this.level = level;
|
|
|
|
|
this.logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Logger to log messages.
|
|
|
|
|
* use {@see Log4js#getLogger(String)} to get an instance.
|
|
|
|
|
* @constructor
|
|
|
|
|
* @param name name of category to log to
|
|
|
|
|
* @author Stephan Strittmatter
|
|
|
|
|
*/
|
|
|
|
|
function Logger (name, level) {
|
|
|
|
|
this.category = name || DEFAULT_CATEGORY;
|
|
|
|
|
|
|
|
|
|
if (! this.level) {
|
|
|
|
|
this.__proto__.level = levels.TRACE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
util.inherits(Logger, events.EventEmitter);
|
|
|
|
|
|
|
|
|
|
Logger.prototype.setLevel = function(level) {
|
|
|
|
|
this.level = levels.toLevel(level, this.level || levels.TRACE);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype.removeLevel = function() {
|
|
|
|
|
delete this.level;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype.log = function() {
|
|
|
|
|
var args = Array.prototype.slice.call(arguments)
|
|
|
|
|
, logLevel = args.shift()
|
|
|
|
|
, loggingEvent = new LoggingEvent(this.category, logLevel, args, this);
|
|
|
|
|
this.emit("log", loggingEvent);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype.isLevelEnabled = function(otherLevel) {
|
|
|
|
|
return this.level.isLessThanOrEqualTo(otherLevel);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
['Trace','Debug','Info','Warn','Error','Fatal'].forEach(
|
|
|
|
|
function(levelString) {
|
|
|
|
|
var level = levels.toLevel(levelString);
|
|
|
|
|
Logger.prototype['is'+levelString+'Enabled'] = function() {
|
|
|
|
|
return this.isLevelEnabled(level);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Logger.prototype[levelString.toLowerCase()] = function () {
|
|
|
|
|
if (this.isLevelEnabled(level)) {
|
|
|
|
|
var args = Array.prototype.slice.call(arguments);
|
|
|
|
|
args.unshift(level);
|
|
|
|
|
Logger.prototype.log.apply(this, args);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
function setGlobalLogLevel(level) {
|
|
|
|
|
Logger.prototype.level = levels.toLevel(level, levels.TRACE);
|
|
|
|
|
}
|
|
|
|
@ -377,20 +377,6 @@ module.exports = {
|
|
|
|
|
connectLogger: require('./connect-logger').connectLogger
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//load the old-style appenders
|
|
|
|
|
[ 'console', 'file', 'logLevelFilter' ].forEach(function(appender) {
|
|
|
|
|
loadAppender(appender);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//set ourselves up
|
|
|
|
|
configure();
|
|
|
|
|
|
|
|
|
|
//keep the old-style layouts
|
|
|
|
|
['basicLayout','messagePassThroughLayout','colouredLayout','coloredLayout'].forEach(function(item) {
|
|
|
|
|
module.exports[item] = layouts[item];
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//and the old-style appenders
|
|
|
|
|
module.exports.consoleAppender = module.exports.appenders.console;
|
|
|
|
|
module.exports.fileAppender = module.exports.appenders.file;
|
|
|
|
|
module.exports.logLevelFilter = module.exports.appenders.logLevelFilter;
|
|
|
|
|