added mocha, simplified logger by removing levels and making immutable
This commit is contained in:
@@ -1,80 +1,49 @@
|
||||
"use strict";
|
||||
var debug = require('./debug')('logger')
|
||||
, levels = require('./levels')
|
||||
, util = require('util')
|
||||
, DEFAULT_CATEGORY = '[default]';
|
||||
, util = require('util');
|
||||
|
||||
module.exports = function Logger(dispatch, category) {
|
||||
if (typeof dispatch !== 'function') {
|
||||
throw new Error("Logger must have a dispatch delegate.");
|
||||
}
|
||||
|
||||
if (!category) {
|
||||
throw new Error("Logger must have a category.");
|
||||
}
|
||||
|
||||
function log() {
|
||||
var args = Array.prototype.slice.call(arguments)
|
||||
, logLevel = args.shift()
|
||||
, loggingEvent = new LoggingEvent(category, logLevel, args);
|
||||
debug("Logging event " + loggingEvent + " to dispatch = " + util.inspect(dispatch));
|
||||
dispatch(loggingEvent);
|
||||
}
|
||||
|
||||
var self = this;
|
||||
['trace','debug','info','warn','error','fatal'].forEach(
|
||||
function(level) {
|
||||
self[level] = function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
args.unshift(level);
|
||||
log.apply(this, args);
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Models a logging event.
|
||||
* @constructor
|
||||
* @param {String} categoryName name of category
|
||||
* @param {String} category name of category
|
||||
* @param {Log4js.Level} level level of message
|
||||
* @param {Array} data objects to log
|
||||
* @author Seth Chisamore
|
||||
*/
|
||||
function LoggingEvent (categoryName, level, data) {
|
||||
function LoggingEvent (category, level, data) {
|
||||
this.startTime = new Date();
|
||||
this.categoryName = categoryName;
|
||||
this.category = category;
|
||||
this.data = data;
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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, dispatch) {
|
||||
this.category = name || DEFAULT_CATEGORY;
|
||||
|
||||
if (level) {
|
||||
this.setLevel(level);
|
||||
}
|
||||
|
||||
this.dispatch = dispatch;
|
||||
}
|
||||
Logger.DEFAULT_CATEGORY = DEFAULT_CATEGORY;
|
||||
Logger.prototype.level = levels.TRACE;
|
||||
|
||||
Logger.prototype.setLevel = function(level) {
|
||||
debug("setting level to " + 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);
|
||||
debug("Logging event " + loggingEvent + " to dispatch = " + util.inspect(this.dispatch));
|
||||
this.dispatch(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);
|
||||
}
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
exports.LoggingEvent = LoggingEvent;
|
||||
exports.Logger = Logger;
|
||||
|
||||
Reference in New Issue
Block a user