All files / lib console_logger.js

91.3% Statements 21/23
82.35% Branches 14/17
100% Functions 4/4
91.3% Lines 21/23

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 564x         4x                   4x 32x 32x       55x 49x   55x 49x   6x       6x 6x 6x 6x   43x 43x       43x 43x 10x                 4x   4x  
var slice = Array.prototype.slice;
/**
 * RFC 5424 syslog severity levels, see
 * https://tools.ietf.org/html/rfc5424#section-6.2.1
 */
var levels = [
    'emergency',
    'alert',
    'critical',
    'error',
    'warning',
    'notice',
    'info',
    'debug'
];
var levelsByName = levels.reduce(function(out, name, index) {
    out[name] = index;
    return out;
}, {});
 
function normalizeLogLevel(level) {
    if (typeof level === 'string') {
        level = levelsByName[level];
    }
    if (typeof level === 'number' && level >= 0 && level < levels.length) {
        return level;
    }
    return false;
}
 
function ConsoleLogger(_console, maxLevel, defaultLevel) {
    _console = _console || console;
    maxLevel = normalizeLogLevel(maxLevel) || 6;
    defaultLevel = normalizeLogLevel(defaultLevel) || 6;
    return {
        log: function(level, message) {
            var normalizedLevel = normalizeLogLevel(level);
            Iif (!normalizedLevel) {
                message = level;
                normalizedLevel = defaultLevel;
            }
            var levelName = levels[normalizedLevel];
            if (normalizedLevel <= maxLevel) {
                _console.log.apply(
                    _console,
                    [levelName + ': ' + message].concat(slice.call(arguments, 2))
                );
            }
        }
    };
}
 
ConsoleLogger.LogLevels = levelsByName;
 
module.exports = ConsoleLogger;