UNPKG

grandma

Version:
43 lines (34 loc) 1 kB
var util = require('util'); var enums = require('./enums.js'); var optPrefix = 'debug'; var envPrefix = 'GRANDMA_DEBUG_'; var LogLevels = enums({ None: 0, Log: 1, Error: 2 }); function allowLog(options, levelName) { // if `debug` is present, turn on all levels if (options.debug) { return true; } if (options[optPrefix + levelName] || process.env[envPrefix + levelName.toUpperCase()]) { return true; } return false; } module.exports = function logger(options) { var stdout = options.stdout || process.stdout; var stderr = options.stderr || process.stderr; function logAtLevel(level, stream) { return function() { if (allowLog(options, level)) { stream.write(util.format.apply(util, arguments) + '\n'); } }; } return { log: logAtLevel(LogLevels.fromValue(LogLevels.Log), stdout), error: logAtLevel(LogLevels.fromValue(LogLevels.Error), stderr) }; };