관리-도구
편집 파일: winston.js
/* * winston.js: Top-level include defining Winston. * * (C) 2010 Charlie Robbins * MIT LICENCE * */ var winston = exports; // // use require method for webpack bundle // winston.version = require('../package.json').version // // Include transports defined by default by winston // winston.transports = require('./winston/transports'); // // Expose utility methods // var common = require('./winston/common'); winston.hash = common.hash; winston.clone = common.clone; winston.longestElement = common.longestElement; winston.exception = require('./winston/exception'); winston.config = require('./winston/config'); winston.addColors = winston.config.addColors; // // Expose core Logging-related prototypes. // winston.Container = require('./winston/container').Container; winston.Logger = require('./winston/logger').Logger; winston.Transport = require('./winston/transports/transport').Transport; // // We create and expose a default `Container` to `winston.loggers` so that the // programmer may manage multiple `winston.Logger` instances without any additional overhead. // // ### some-file1.js // // var logger = require('winston').loggers.get('something'); // // ### some-file2.js // // var logger = require('winston').loggers.get('something'); // winston.loggers = new winston.Container(); // // We create and expose a 'defaultLogger' so that the programmer may do the // following without the need to create an instance of winston.Logger directly: // // var winston = require('winston'); // winston.log('info', 'some message'); // winston.error('some error'); // var defaultLogger = new winston.Logger({ transports: [new winston.transports.Console()] }); // // Pass through the target methods onto `winston`. // var methods = [ 'log', 'query', 'stream', 'add', 'remove', 'clear', 'profile', 'startTimer', 'extend', 'cli', 'handleExceptions', 'unhandleExceptions', 'configure' ]; winston.padLevels = false; common.setLevels(winston, null, defaultLogger.levels); methods.forEach(function (method) { winston[method] = function () { return defaultLogger[method].apply(defaultLogger, arguments); }; }); // // ### function cli () // Configures the default winston logger to have the // settings for command-line interfaces: no timestamp, // colors enabled, padded output, and additional levels. // winston.cli = function () { winston.padLevels = true; common.setLevels(winston, defaultLogger.levels, winston.config.cli.levels); defaultLogger.setLevels(winston.config.cli.levels); winston.config.addColors(winston.config.cli.colors); if (defaultLogger.transports.console) { defaultLogger.transports.console.colorize = true; defaultLogger.transports.console.timestamp = false; } return winston; }; // // ### function setLevels (target) // #### @target {Object} Target levels to use // Sets the `target` levels specified on the default winston logger. // winston.setLevels = function (target) { common.setLevels(winston, defaultLogger.levels, target); defaultLogger.setLevels(target); }; // // Define getter / setter for the default logger level // which need to be exposed by winston. // Object.defineProperty(winston, 'level', { get: function () { return defaultLogger.level; }, set: function (val) { defaultLogger.level = val; Object.keys(defaultLogger.transports).forEach(function(key) { defaultLogger.transports[key].level = val; }); } }); // // Define getters / setters for appropriate properties of the // default logger which need to be exposed by winston. // ['emitErrs', 'exitOnError', 'padLevels', 'levelLength', 'stripColors'].forEach(function (prop) { Object.defineProperty(winston, prop, { get: function () { return defaultLogger[prop]; }, set: function (val) { defaultLogger[prop] = val; } }); }); // // @default {Object} // The default transports and exceptionHandlers for // the default winston logger. // Object.defineProperty(winston, 'default', { get: function () { return { transports: defaultLogger.transports, exceptionHandlers: defaultLogger.exceptionHandlers }; } });