1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 'use strict';
- /* global window: true */
- /* eslint-disable
- no-shadow,
- no-param-reassign,
- space-before-function-paren
- */
- const uuid = require('uuid/v4');
- const colors = require('ansi-colors');
- const loglevel = require('./loglevel');
- const symbols = {
- trace: colors.grey('₸'),
- debug: colors.cyan('➤'),
- info: colors.blue(colors.symbols.info),
- warn: colors.yellow(colors.symbols.warning),
- error: colors.red(colors.symbols.cross)
- };
- const defaults = {
- name: '<unknown>',
- level: 'info',
- unique: true
- };
- const prefix = {
- level (options) {
- return symbols[options.level];
- },
- template: `{{level}} ${colors.gray('「{{name}}」')}: `
- };
- function log (options) {
- const opts = Object.assign({}, defaults, options);
- const { id } = options;
- opts.prefix = Object.assign({}, prefix, options.prefix);
- delete opts.id;
- Object.defineProperty(opts, 'id', {
- get() {
- if (!id) {
- return this.name + (opts.unique ? `-${uuid()}` : '');
- }
- return id;
- }
- });
- if (opts.timestamp) {
- opts.prefix.template = `[{{time}}] ${opts.prefix.template}`;
- }
- const log = loglevel.getLogger(opts);
- if (!Object.prototype.hasOwnProperty.call(log, 'id')) {
- Object.defineProperty(log, 'id', {
- get() {
- return opts.id;
- }
- });
- }
- return log;
- }
- module.exports = log;
- // NOTE: this is exported so that consumers of webpack-log can use the same
- // version of ansi-colors to decorate log messages without incurring additional
- // dependency overhead
- module.exports.colors = colors;
- // NOTE: This is an undocumented function solely for the purpose of tests.
- // Do not use this method in production code. Using in production code
- // may result in strange behavior.
- module.exports.delLogger = function delLogger(name) {
- delete loglevel.loggers[name];
- };
- module.exports.factories = loglevel.factories;
|