winston.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /**
  2. * winston.js: Top-level include defining Winston.
  3. *
  4. * (C) 2010 Charlie Robbins
  5. * MIT LICENCE
  6. */
  7. 'use strict';
  8. var logform = require('logform');
  9. var _require = require('./winston/common'),
  10. warn = _require.warn;
  11. /**
  12. * Expose version. Use `require` method for `webpack` support.
  13. * @type {string}
  14. */
  15. exports.version = require('../package.json').version;
  16. /**
  17. * Include transports defined by default by winston
  18. * @type {Array}
  19. */
  20. exports.transports = require('./winston/transports');
  21. /**
  22. * Expose utility methods
  23. * @type {Object}
  24. */
  25. exports.config = require('./winston/config');
  26. /**
  27. * Hoist format-related functionality from logform.
  28. * @type {Object}
  29. */
  30. exports.addColors = logform.levels;
  31. /**
  32. * Hoist format-related functionality from logform.
  33. * @type {Object}
  34. */
  35. exports.format = logform.format;
  36. /**
  37. * Expose core Logging-related prototypes.
  38. * @type {function}
  39. */
  40. exports.createLogger = require('./winston/create-logger');
  41. /**
  42. * Expose core Logging-related prototypes.
  43. * @type {function}
  44. */
  45. exports.Logger = require('./winston/logger');
  46. /**
  47. * Expose core Logging-related prototypes.
  48. * @type {Object}
  49. */
  50. exports.ExceptionHandler = require('./winston/exception-handler');
  51. /**
  52. * Expose core Logging-related prototypes.
  53. * @type {Object}
  54. */
  55. exports.RejectionHandler = require('./winston/rejection-handler');
  56. /**
  57. * Expose core Logging-related prototypes.
  58. * @type {Container}
  59. */
  60. exports.Container = require('./winston/container');
  61. /**
  62. * Expose core Logging-related prototypes.
  63. * @type {Object}
  64. */
  65. exports.Transport = require('winston-transport');
  66. /**
  67. * We create and expose a default `Container` to `winston.loggers` so that the
  68. * programmer may manage multiple `winston.Logger` instances without any
  69. * additional overhead.
  70. * @example
  71. * // some-file1.js
  72. * const logger = require('winston').loggers.get('something');
  73. *
  74. * // some-file2.js
  75. * const logger = require('winston').loggers.get('something');
  76. */
  77. exports.loggers = new exports.Container();
  78. /**
  79. * We create and expose a 'defaultLogger' so that the programmer may do the
  80. * following without the need to create an instance of winston.Logger directly:
  81. * @example
  82. * const winston = require('winston');
  83. * winston.log('info', 'some message');
  84. * winston.error('some error');
  85. */
  86. var defaultLogger = exports.createLogger();
  87. // Pass through the target methods onto `winston.
  88. Object.keys(exports.config.npm.levels).concat(['log', 'query', 'stream', 'add', 'remove', 'clear', 'profile', 'startTimer', 'handleExceptions', 'unhandleExceptions', 'handleRejections', 'unhandleRejections', 'configure', 'child']).forEach(function (method) {
  89. return exports[method] = function () {
  90. return defaultLogger[method].apply(defaultLogger, arguments);
  91. };
  92. });
  93. /**
  94. * Define getter / setter for the default logger level which need to be exposed
  95. * by winston.
  96. * @type {string}
  97. */
  98. Object.defineProperty(exports, 'level', {
  99. get: function get() {
  100. return defaultLogger.level;
  101. },
  102. set: function set(val) {
  103. defaultLogger.level = val;
  104. }
  105. });
  106. /**
  107. * Define getter for `exceptions` which replaces `handleExceptions` and
  108. * `unhandleExceptions`.
  109. * @type {Object}
  110. */
  111. Object.defineProperty(exports, 'exceptions', {
  112. get: function get() {
  113. return defaultLogger.exceptions;
  114. }
  115. });
  116. /**
  117. * Define getters / setters for appropriate properties of the default logger
  118. * which need to be exposed by winston.
  119. * @type {Logger}
  120. */
  121. ['exitOnError'].forEach(function (prop) {
  122. Object.defineProperty(exports, prop, {
  123. get: function get() {
  124. return defaultLogger[prop];
  125. },
  126. set: function set(val) {
  127. defaultLogger[prop] = val;
  128. }
  129. });
  130. });
  131. /**
  132. * The default transports and exceptionHandlers for the default winston logger.
  133. * @type {Object}
  134. */
  135. Object.defineProperty(exports, 'default', {
  136. get: function get() {
  137. return {
  138. exceptionHandlers: defaultLogger.exceptionHandlers,
  139. rejectionHandlers: defaultLogger.rejectionHandlers,
  140. transports: defaultLogger.transports
  141. };
  142. }
  143. });
  144. // Have friendlier breakage notices for properties that were exposed by default
  145. // on winston < 3.0.
  146. warn.deprecated(exports, 'setLevels');
  147. warn.forFunctions(exports, 'useFormat', ['cli']);
  148. warn.forProperties(exports, 'useFormat', ['padLevels', 'stripColors']);
  149. warn.forFunctions(exports, 'deprecated', ['addRewriter', 'addFilter', 'clone', 'extend']);
  150. warn.forProperties(exports, 'deprecated', ['emitErrs', 'levelLength']);