diff --git a/examples/app.js b/examples/app.js index 9c39778..df47b03 100644 --- a/examples/app.js +++ b/examples/app.js @@ -1,6 +1,9 @@ var logger = require('../lib/nlogger').logger(module); var first = require('./my-modules/first'); -var second = require('./my-modules/second'); +/** + * Example with runtime config - see module code + */ +var second = require('./my-modules/runtime-config'); var third = require('./my-modules/third'); setTimeout(function() { diff --git a/examples/my-modules/runtime-config.js b/examples/my-modules/runtime-config.js new file mode 100644 index 0000000..47b16a6 --- /dev/null +++ b/examples/my-modules/runtime-config.js @@ -0,0 +1,5 @@ +var logger = require('../../lib/nlogger').logger('my-custom-name',{level:{'*':'warn'}}); + +logger.info('Because of the runtime cfg, this will be ignored.'); +logger.warn('But this is visible. Notice the custom name too :-)'); +logger.error('And here is a formated string with a number %d and an object %s',5,require('util').inspect({a:1})); diff --git a/examples/my-modules/second.js b/examples/my-modules/second.js deleted file mode 100644 index d1d8bff..0000000 --- a/examples/my-modules/second.js +++ /dev/null @@ -1,3 +0,0 @@ -var logger = require('../../lib/nlogger').logger('my-custom-name'); - -logger.info('Message from second module with defined module name'); diff --git a/lib/nlogger.js b/lib/nlogger.js index 89e767a..c7e414d 100644 --- a/lib/nlogger.js +++ b/lib/nlogger.js @@ -24,7 +24,8 @@ */ var util = require('util'), - fs = require('fs'); + fs = require('fs'), + config = false; function padZero(number) { @@ -76,37 +77,27 @@ function getClass(module) { } } -function getMessage(items) { - var msg = [], i; - for (i = 0; i < items.length; i++) { - if (typeof items[i] == 'string') { - msg.push(items[i]); - } else { - msg.push(util.inspect(items[i], false, 10)); - } - } - return msg.join(''); -} - try { - var file = fs.readFileSync('./nlogger.json', 'binary'), - config = JSON.parse(file); + var file = fs.readFileSync('./nlogger.json', 'binary'); + config = JSON.parse(file); } catch(e) { - util.puts(getDate() + ' WARN nlogger - Config file not found. Using default configuration.'); - config = {}; + } -var defaultLogLevel = config.level && config.level['*'] || 'trace'; -var logLevels = config.level || {}; -var useColor = config.color || (config.color == 'auto' && process.env.TERM && process.env.TERM.indexOf('color') >= 0); +exports.logger = function(module,_config) { + + config = (_config && (typeof _config == 'object')) ? _config : (config ? config : {}); + + var defaultLogLevel = config.level && config.level['*'] || 'trace'; + var logLevels = config.level || {}; + var useColor = config.color || (config.color == 'auto' && process.env.TERM && process.env.TERM.indexOf('color') >= 0); -exports.logger = function(module) { var methods = { - 'trace': { 'color': 32, 'priority': 1 }, - 'debug': { 'color': 34, 'priority': 2 }, - 'info': { 'color': 30, 'priority': 3 }, - 'warn': { 'color': 35, 'priority': 4 }, - 'error': { 'color': 31, 'priority': 5 } + 'trace': { 'color': 32, 'priority': 1, 'error' : 0 }, + 'debug': { 'color': 34, 'priority': 2, 'error' : 0 }, + 'info': { 'color': 30, 'priority': 3, 'error' : 0 }, + 'warn': { 'color': 35, 'priority': 4, 'error' : 1 }, + 'error': { 'color': 31, 'priority': 5, 'error' : 1 } }; var logLevel = logLevels[getClass(module)] || defaultLogLevel; @@ -120,13 +111,18 @@ exports.logger = function(module) { if (useColor) { logger[level] = function(msg) { if (methods[level].priority >= priority) { - util.puts('\x1B[' + methods[level].color + 'm' + getDate() + ' ' + levelStr + ' ' + getClass(module) +':' + getLine() + ' - ' + getMessage(arguments) + '\x1B[0m'); + util.puts('\x1B[' + methods[level].color + 'm' + getDate() + ' ' + levelStr + ' ' + getClass(module) +':' + getLine() + ' - ' + util.format(arguments) + '\x1B[0m'); } }; } else { logger[level] = function(msg) { if (methods[level].priority >= priority) { - util.puts(getDate() + ' ' + levelStr + ' ' + getClass(module) +':' + getLine() + ' - ' + getMessage(arguments)); + if(methods[level].error) { + util.error(getDate() + ' ' + levelStr + ' ' + getClass(module) +':' + getLine() + ' - ' + util.format.apply(util,arguments)); + } + else { + util.puts(getDate() + ' ' + levelStr + ' ' + getClass(module) +':' + getLine() + ' - ' + util.format.apply(util,arguments)); + } } }; }