Last active
August 29, 2015 13:55
-
-
Save andrewjjenkins/8701921 to your computer and use it in GitHub Desktop.
A really simple javascript module to log
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var log = (function () { | |
"use strict"; | |
var format = require('util').format; | |
// Customize levels, but do not name any level: "log" "getLevel" "setLevel" | |
var levels = { ERROR: 10, WARN: 20, INFO: 30, DEBUG: 40, TRACE: 50 }; | |
var currentLevel = 'INFO'; | |
function doGetLevel() { return currentLevel; } | |
function doSetLevel(level) { | |
if (!levels[level]) { throw new Error('No such level ' + level); } | |
currentLevel = level; | |
} | |
function doLog(level, otherArgs) { | |
if (!levels[level] || levels[level] > levels[currentLevel]) { return; } | |
var args = [].slice.call(arguments); | |
args.shift(); | |
console.log(level + ': ' + format.apply(this, args)); | |
} | |
var toRet = { log: doLog, getLevel: doGetLevel, setLevel: doSetLevel }; | |
Object.getOwnPropertyNames(levels).forEach(function (level) { | |
this[level.toLowerCase()] = function () { | |
var args = [].slice.call(arguments); | |
args.unshift(level); | |
return doLog.apply(this, args); | |
} | |
}, toRet); | |
return toRet; | |
})(); | |
// EXAMPLE | |
console.log('Log level is: ' + log.getLevel()); | |
log.error('This is an error'); | |
log.warn('This is a warning'); | |
log.info('This is info'); | |
log.debug('This is debug'); // Not seen | |
log.trace('This is trace'); // Not seen | |
// Adjust level | |
log.setLevel('TRACE'); | |
console.log('Log level is: ' + log.getLevel()); | |
log.error('This is an error'); | |
log.warn('This is a warning'); | |
log.info('This is info'); | |
log.debug('This is debug'); | |
log.trace('This is trace'); | |
log.setLevel('WARN'); | |
console.log('Log level is: ' + log.getLevel()); | |
log.error('This is an error'); | |
log.warn('This is a warning'); | |
log.info('This is info'); // Not seen | |
log.debug('This is debug'); // Not seen | |
log.trace('This is trace'); // Not seen | |
// sprintf-style formatting. | |
log.warn('This is a %s generated at %s in process %d', | |
'warning', Date(), process.pid); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment