diff --git a/lib/log4js.js b/lib/log4js.js index e7f20fd..125c1e0 100644 --- a/lib/log4js.js +++ b/lib/log4js.js @@ -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; diff --git a/test/fileAppender.js b/test/fileAppender.js index fda2874..eb26c9c 100644 --- a/test/fileAppender.js +++ b/test/fileAppender.js @@ -22,8 +22,9 @@ vows.describe('log4js fileAppender').addBatch({ , testFile = path.join(__dirname, '/fa-default-test.log') , logger = log4js.getLogger('default-settings'); remove(testFile); + //log4js.configure({ appenders:[ { type: "file", filename: testFile, category: 'default-settings' } ] }); log4js.clearAppenders(); - log4js.addAppender(log4js.fileAppender(testFile), 'default-settings'); + log4js.addAppender(require('../lib/appenders/file').appender(testFile), 'default-settings'); logger.info("This should be in the file."); @@ -47,7 +48,7 @@ vows.describe('log4js fileAppender').addBatch({ remove(testFile + '.1'); //log file of 100 bytes maximum, no backups log4js.clearAppenders(); - log4js.addAppender(log4js.fileAppender(testFile, log4js.layouts.basicLayout, 100, 0), 'max-file-size'); + log4js.addAppender(require('../lib/appenders/file').appender(testFile, log4js.layouts.basicLayout, 100, 0), 'max-file-size'); logger.info("This is the first log message."); logger.info("This is an intermediate log message."); logger.info("This is the second log message."); @@ -81,7 +82,7 @@ vows.describe('log4js fileAppender').addBatch({ //log file of 50 bytes maximum, 2 backups log4js.clearAppenders(); - log4js.addAppender(log4js.fileAppender(testFile, log4js.layouts.basicLayout, 50, 2), 'max-file-size-backups'); + log4js.addAppender(require('../lib/appenders/file').appender(testFile, log4js.layouts.basicLayout, 50, 2), 'max-file-size-backups'); logger.info("This is the first log message."); logger.info("This is the second log message."); logger.info("This is the third log message."); diff --git a/test/logLevelFilter.js b/test/logLevelFilter.js index 96268c2..c0b0498 100644 --- a/test/logLevelFilter.js +++ b/test/logLevelFilter.js @@ -15,7 +15,7 @@ vows.describe('log4js logLevelFilter').addBatch({ topic: function() { var log4js = require('../lib/log4js'), logEvents = [], logger; log4js.clearAppenders(); - log4js.addAppender(log4js.logLevelFilter('ERROR', function(evt) { logEvents.push(evt); }), "logLevelTest"); + log4js.addAppender(require('../lib/appenders/logLevelFilter').appender('ERROR', function(evt) { logEvents.push(evt); }), "logLevelTest"); logger = log4js.getLogger("logLevelTest"); logger.debug('this should not trigger an event'); logger.warn('neither should this'); @@ -66,4 +66,4 @@ vows.describe('log4js logLevelFilter').addBatch({ } } } -}).export(module); \ No newline at end of file +}).export(module);