Jump To …

winston.js

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

require.paths.unshift(require('path').join(__dirname));

var winston = exports;

Expose version

winston.version = [0, 2, 0];

Include transports defined by default by winston

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

function findTransport (transport) Helper method to find existing transport

winston.findTransport = function (transport) {
  var name, existing = Object.keys(winston.transports).filter(function (k) { 
    return winston.transports[k] === transport;
  });

  return existing.length > 0 ? existing[0].toLowerCase() : null;
};

var utils         = require('utils');
winston.hash      = utils.hash;
winston.clone     = utils.clone;
winston.config    = require('winston/config');
winston.addColors = winston.config.addColors; 
winston.Logger    = require('winston/logger').Logger;

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)()] });
utils.setLevels(winston, null, defaultLogger.levels);

['log', 'add', 'remove', 'profile', 'extend'].forEach(function (method) {
  winston[method] = function () {
    return defaultLogger[method].apply(defaultLogger, arguments);
  };
});

winston.setLevels = function (levels) {
  utils.setLevels(winston, defaultLogger.levels, levels);
  defaultLogger.setLevels(levels);
};

Define emitErrs property for default logger

Object.defineProperty(winston, 'emitErrs', {
  get: function () {
    return defaultLogger.emitErrs;
  },
  set: function (val) {
    defaultLogger.emitErrs = val;
  }
});

function defaultTransports () returns the transports set on the default winston logger

winston.defaultTransports = function () {
  return defaultLogger.transports;
};