Jump To …
winston/common.html winston/config/cli-config.html winston/config/npm-config.html winston/config/syslog-config.html winston/config.html winston/exception.html winston/logger.html winston/transports/console.html winston/transports/couchdb.html winston/transports/file.html winston/transports/loggly.html winston/transports/transport.html winston/transports/webhook.html winston/transports.html winston.html

# winston.js

¶

    /*
     * winston.js: Top-level include defining Winston.
     *
     * (C) 2010 Charlie Robbins
     * MIT LICENCE
     *
     */

    var winston = exports;

¶

Expose version using `pkginfo`

    require('pkginfo')(module, 'version');

¶

Include transports defined by default by winston

    winston.transports = require('./winston/transports');

    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;
    winston.Logger         = require('./winston/logger').Logger;
    winston.Transport      = require('./winston/transports/transport').Transport;

¶

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',
      'add',
      'remove',
      'profile',
      'extend',
      'cli',
      'handleExceptions',
      'unhandleExceptions'
    ];
    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 getters / setters for appropriate properties of the default logger which need to be exposed by winston.

    ['emitErrs', 'padLevels', 'levelLength'].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
        };
      }
    });