tyr-cli
Version:
A command line interface for hammer-io.
155 lines (25 loc) • 16.4 kB
JavaScript
'use strict';Object.defineProperty(exports, "__esModule", { value: true });exports.
getActiveLogger = getActiveLogger;exports.
setActiveLogger = setActiveLogger;exports.
enableLogFile = enableLogFile;var _winston = require('winston');function isLoggerType(str) {return str === 'info' || str === 'verbose' || str === 'debug';} /**
* The initial active logger attempts to read from environment variables.
* Otherwise, it defaults to 'info'.
*/let activeLogger = process.env.TYR_LOG_LEVEL || 'info';if (!isLoggerType(activeLogger)) {activeLogger = 'info';} // Info level is only appended to the message if it's out of the ordinary (not 'info')
const customFormatting = _winston.format.printf(info => {const level = `[${info.level.toUpperCase()}] `;return `${level}${info.message}`;}); // Formatting for writing to a log file includes the timestamp and level
const logfileFormatting = _winston.format.printf(info => {const level = `${info.level.toUpperCase()} `.slice(0, 7);return `${info.timestamp} [${level}] ${info.message}`;}); // Switches the order of debug and verbose so that verbose
// doesn't show during debug.
const customDebugLevels = { levels: { error: 0, warn: 1, info: 2, http: 3, debug: 4, verbose: 5, silly: 6 }, colors: { error: 'red', warn: 'yellow', info: 'green', http: 'grey', debug: 'grey' } }; /**
* The info logger
*/_winston.loggers.add('info', { levels: customDebugLevels.levels, transports: [new _winston.transports.Console({ level: 'info', format: _winston.format.combine(_winston.format.colorize({ message: true }), customFormatting) })] }); /**
* The verbose logger
*/_winston.loggers.add('verbose', { levels: customDebugLevels.levels, format: _winston.format.combine(_winston.format.colorize({ message: true }), customFormatting), transports: [new _winston.transports.Console({ level: 'verbose', format: _winston.format.combine(_winston.format.colorize({ message: true }), customFormatting) })] }); /**
* The debug logger
*/_winston.loggers.add('debug', { levels: customDebugLevels.levels, format: _winston.format.combine(_winston.format.colorize({ message: true }), customFormatting), transports: [new _winston.transports.Console({ level: 'debug', format: _winston.format.combine(_winston.format.colorize({ message: true }), customFormatting) })] });(0, _winston.addColors)(customDebugLevels); /**
* Returns the active logger instance.
*/function getActiveLogger() {return _winston.loggers.get(activeLogger);} /**
* Changes the active logger instance.
*
* @param loggerType can be 'info', 'verbose', or 'debug'
*/function setActiveLogger(loggerType) {if (!isLoggerType(loggerType)) {throw new Error('Active logger must be set to either \'info\', \'verbose\', or \'debug\'');}activeLogger = loggerType;} /**
* Write to all logs with level `debug` and below to the given file with NO colors
*/function enableLogFile(logFilename) {getActiveLogger().add(new _winston.transports.File({ level: 'debug', filename: logFilename, format: _winston.format.combine(_winston.format.timestamp(), logfileFormatting) }));}