144 lines
3.7 KiB
JavaScript
144 lines
3.7 KiB
JavaScript
|
/*
|
||
|
* 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');
|
||
|
|
||
|
//
|
||
|
// 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',
|
||
|
'add',
|
||
|
'remove',
|
||
|
'profile',
|
||
|
'startTimer',
|
||
|
'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', 'exitOnError', 'padLevels', 'level', '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
|
||
|
};
|
||
|
}
|
||
|
});
|