123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- /**
- * winston.js: Top-level include defining Winston.
- *
- * (C) 2010 Charlie Robbins
- * MIT LICENCE
- */
- 'use strict';
- const logform = require('logform');
- const { warn } = require('./winston/common');
- /**
- * Setup to expose.
- * @type {Object}
- */
- const winston = exports;
- /**
- * Expose version. Use `require` method for `webpack` support.
- * @type {string}
- */
- winston.version = require('../package.json').version;
- /**
- * Include transports defined by default by winston
- * @type {Array}
- */
- winston.transports = require('./winston/transports');
- /**
- * Expose utility methods
- * @type {Object}
- */
- winston.config = require('./winston/config');
- /**
- * Hoist format-related functionality from logform.
- * @type {Object}
- */
- winston.addColors = logform.levels;
- /**
- * Hoist format-related functionality from logform.
- * @type {Object}
- */
- winston.format = logform.format;
- /**
- * Expose core Logging-related prototypes.
- * @type {function}
- */
- winston.createLogger = require('./winston/create-logger');
- /**
- * Expose core Logging-related prototypes.
- * @type {Object}
- */
- winston.ExceptionHandler = require('./winston/exception-handler');
- /**
- * Expose core Logging-related prototypes.
- * @type {Container}
- */
- winston.Container = require('./winston/container');
- /**
- * Expose core Logging-related prototypes.
- * @type {Object}
- */
- winston.Transport = require('winston-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.
- * @example
- * // some-file1.js
- * const logger = require('winston').loggers.get('something');
- *
- * // some-file2.js
- * const 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:
- * @example
- * const winston = require('winston');
- * winston.log('info', 'some message');
- * winston.error('some error');
- */
- const defaultLogger = winston.createLogger();
- // Pass through the target methods onto `winston.
- Object.keys(winston.config.npm.levels).concat([
- 'log',
- 'query',
- 'stream',
- 'add',
- 'remove',
- 'clear',
- 'profile',
- 'startTimer',
- 'handleExceptions',
- 'unhandleExceptions',
- 'configure'
- ]).forEach(method => (
- winston[method] = (...args) => defaultLogger[method](...args)
- ));
- /**
- * Define getter / setter for the default logger level which need to be exposed
- * by winston.
- * @type {string}
- */
- Object.defineProperty(winston, 'level', {
- get() {
- return defaultLogger.level;
- },
- set(val) {
- defaultLogger.level = val;
- }
- });
- /**
- * Define getter for `exceptions` which replaces `handleExceptions` and
- * `unhandleExceptions`.
- * @type {Object}
- */
- Object.defineProperty(winston, 'exceptions', {
- get() {
- return defaultLogger.exceptions;
- }
- });
- /**
- * Define getters / setters for appropriate properties of the default logger
- * which need to be exposed by winston.
- * @type {Logger}
- */
- [
- 'exitOnError'
- ].forEach(prop => {
- Object.defineProperty(winston, prop, {
- get() {
- return defaultLogger[prop];
- },
- set(val) {
- defaultLogger[prop] = val;
- }
- });
- });
- /**
- * The default transports and exceptionHandlers for the default winston logger.
- * @type {Object}
- */
- Object.defineProperty(winston, 'default', {
- get() {
- return {
- exceptionHandlers: defaultLogger.exceptionHandlers,
- transports: defaultLogger.transports
- };
- }
- });
- // Have friendlier breakage notices for properties that were exposed by default
- // on winston < 3.0.
- warn.deprecated(winston, 'setLevels');
- warn.forFunctions(winston, 'useFormat', ['cli']);
- warn.forProperties(winston, 'useFormat', [
- 'padLevels',
- 'stripColors'
- ]);
- warn.forFunctions(winston, 'deprecated', [
- 'addRewriter',
- 'addFilter',
- 'clone',
- 'extend'
- ]);
- warn.forProperties(winston, 'deprecated', [
- 'emitErrs',
- 'levelLength'
- ]);
- // Throw a useful error when users attempt to run `new winston.Logger`.
- warn.moved(winston, 'createLogger', 'Logger');
|