From 0e5da1d361d50742d55b62e4183e618d59aea4f4 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Mon, 24 Jun 2013 08:51:10 +1000 Subject: [PATCH] moved debug fn out to own module, added tests --- lib/appenders/gelf.js | 8 +--- lib/debug.js | 15 ++++++ lib/streams/BaseRollingFileStream.js | 8 +--- lib/streams/DateRollingFileStream.js | 8 +--- lib/streams/RollingFileStream.js | 8 +--- test/debug-test.js | 72 ++++++++++++++++++++++++++++ 6 files changed, 91 insertions(+), 28 deletions(-) create mode 100644 lib/debug.js create mode 100644 test/debug-test.js diff --git a/lib/appenders/gelf.js b/lib/appenders/gelf.js index 69a18b7..4599856 100644 --- a/lib/appenders/gelf.js +++ b/lib/appenders/gelf.js @@ -4,6 +4,7 @@ var layouts = require('../layouts'); var levels = require('../levels'); var dgram = require('dgram'); var util = require('util'); +var debug = require('../debug')('GELF Appender'); var LOG_EMERG=0; // system is unusable var LOG_ALERT=1; // action must be taken immediately @@ -24,13 +25,6 @@ levelMapping[levels.WARN] = LOG_WARNING; levelMapping[levels.ERROR] = LOG_ERR; levelMapping[levels.FATAL] = LOG_CRIT; -var debug; -if (process.env.NODE_DEBUG && /\blog4js\b/.test(process.env.NODE_DEBUG)) { - debug = function(message) { console.error('LOG4JS: (GELF Appender) %s', message); }; -} else { - debug = function() { }; -} - /** * GELF appender that supports sending UDP packets to a GELF compatible server such as Graylog * diff --git a/lib/debug.js b/lib/debug.js new file mode 100644 index 0000000..e3e6581 --- /dev/null +++ b/lib/debug.js @@ -0,0 +1,15 @@ +"use strict"; + +module.exports = function(label) { + var debug; + + if (process.env.NODE_DEBUG && /\blog4js\b/.test(process.env.NODE_DEBUG)) { + debug = function(message) { + console.error('LOG4JS: (%s) %s', label, message); + }; + } else { + debug = function() { }; + } + + return debug; +}; diff --git a/lib/streams/BaseRollingFileStream.js b/lib/streams/BaseRollingFileStream.js index 36cf4fc..5f03615 100644 --- a/lib/streams/BaseRollingFileStream.js +++ b/lib/streams/BaseRollingFileStream.js @@ -1,6 +1,7 @@ "use strict"; var fs = require('fs') , stream +, debug = require('../debug')('BaseRollingFileStream') , util = require('util') , semver = require('semver'); @@ -10,13 +11,6 @@ if (semver.satisfies(process.version, '>=0.10.0')) { stream = require('readable-stream'); } -var debug; -if (process.env.NODE_DEBUG && /\blog4js\b/.test(process.env.NODE_DEBUG)) { - debug = function(message) { console.error('LOG4JS: (BaseRollingFileStream) %s', message); }; -} else { - debug = function() { }; -} - module.exports = BaseRollingFileStream; function BaseRollingFileStream(filename, options) { diff --git a/lib/streams/DateRollingFileStream.js b/lib/streams/DateRollingFileStream.js index 1007e4d..9da029a 100644 --- a/lib/streams/DateRollingFileStream.js +++ b/lib/streams/DateRollingFileStream.js @@ -1,5 +1,6 @@ "use strict"; var BaseRollingFileStream = require('./BaseRollingFileStream') +, debug = require('../debug')('DateRollingFileStream') , format = require('../date_format') , async = require('async') , fs = require('fs') @@ -7,13 +8,6 @@ var BaseRollingFileStream = require('./BaseRollingFileStream') module.exports = DateRollingFileStream; -var debug; -if (process.env.NODE_DEBUG && /\blog4js\b/.test(process.env.NODE_DEBUG)) { - debug = function(message) { console.error('LOG4JS: (DateRollingFileStream) %s', message); }; -} else { - debug = function() { }; -} - function DateRollingFileStream(filename, pattern, options, now) { debug("Now is " + now); if (pattern && typeof(pattern) === 'object') { diff --git a/lib/streams/RollingFileStream.js b/lib/streams/RollingFileStream.js index f2f5bfa..64a0725 100644 --- a/lib/streams/RollingFileStream.js +++ b/lib/streams/RollingFileStream.js @@ -1,17 +1,11 @@ "use strict"; var BaseRollingFileStream = require('./BaseRollingFileStream') +, debug = require('../debug')('RollingFileStream') , util = require('util') , path = require('path') , fs = require('fs') , async = require('async'); -var debug; -if (process.env.NODE_DEBUG && /\blog4js\b/.test(process.env.NODE_DEBUG)) { - debug = function(message) { console.error('LOG4JS: (RollingFileStream) %s', message); }; -} else { - debug = function() { }; -} - module.exports = RollingFileStream; function RollingFileStream (filename, size, backups, options) { diff --git a/test/debug-test.js b/test/debug-test.js new file mode 100644 index 0000000..92dd915 --- /dev/null +++ b/test/debug-test.js @@ -0,0 +1,72 @@ +"use strict"; +var vows = require('vows') +, assert = require('assert') +, sandbox = require('sandboxed-module') +, fakeConsole = { + error: function(format, label, message) { + this.logged = [ format, label, message ]; + } +} +, globals = function(debugValue) { + return { + process: { + env: { + 'NODE_DEBUG': debugValue + } + }, + console: fakeConsole + }; +}; + +vows.describe('../lib/debug').addBatch({ + 'when NODE_DEBUG is set to log4js': { + topic: function() { + var debug = sandbox.require( + '../lib/debug', + { 'globals': globals('log4js') } + ); + + fakeConsole.logged = []; + debug('cheese')('biscuits'); + return fakeConsole.logged; + }, + 'it should log to console.error': function(logged) { + assert.equal(logged[0], 'LOG4JS: (%s) %s'); + assert.equal(logged[1], 'cheese'); + assert.equal(logged[2], 'biscuits'); + } + }, + + 'when NODE_DEBUG is set to not log4js': { + topic: function() { + var debug = sandbox.require( + '../lib/debug', + { globals: globals('other_module') } + ); + + fakeConsole.logged = []; + debug('cheese')('biscuits'); + return fakeConsole.logged; + }, + 'it should not log to console.error': function(logged) { + assert.equal(logged.length, 0); + } + }, + + 'when NODE_DEBUG is not set': { + topic: function() { + var debug = sandbox.require( + '../lib/debug', + { globals: globals(null) } + ); + + fakeConsole.logged = []; + debug('cheese')('biscuits'); + return fakeConsole.logged; + }, + 'it should not log to console.error': function(logged) { + assert.equal(logged.length, 0); + } + } + +}).exportTo(module);