UNPKG

2.49 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.logger = exports.Logger = exports.LogLevels = void 0;
4const tslib_1 = require("tslib");
5const chalk_1 = tslib_1.__importDefault(require("chalk"));
6const util_1 = tslib_1.__importDefault(require("util"));
7const strip_ansi_1 = tslib_1.__importDefault(require("strip-ansi"));
8const utils_1 = require("./utils");
9exports.LogLevels = {
10 debug: 0,
11 info: 1,
12 warn: 2,
13 error: 3,
14};
15function makeLogger(level, logger) {
16 return (...args) => {
17 const { _props: props } = logger;
18 let levelNum = exports.LogLevels[level];
19 let filterLevelNum = exports.LogLevels[props.level || 'debug'];
20 const time = props.logTime
21 ? typeof props.logTime === 'function'
22 ? props.logTime()
23 : utils_1.formatDate(new Date())
24 : '';
25 let message = (props.format || Logger.defaultProps.format)(level, time, props.levelColor[level], args);
26 if (levelNum >= filterLevelNum && !props.hideConsole) {
27 console.log(message);
28 }
29 props.onLog &&
30 props.onLog({
31 level,
32 time: new Date(),
33 formatedTime: time,
34 message: strip_ansi_1.default(message),
35 levelNum,
36 filterLevelNum,
37 args,
38 });
39 };
40}
41class Logger {
42 constructor(_props = {}) {
43 this.debug = makeLogger('debug', this);
44 this.info = makeLogger('info', this);
45 this.log = makeLogger('info', this);
46 this.warn = makeLogger('warn', this);
47 this.error = makeLogger('error', this);
48 this._props = Object.assign(Object.assign({}, Logger.defaultProps), _props);
49 }
50 static get defaultProps() {
51 return {
52 logTime: false,
53 levelColor: {
54 debug: chalk_1.default.blueBright,
55 info: chalk_1.default.green,
56 warn: chalk_1.default.yellow,
57 error: chalk_1.default.red,
58 },
59 format(level, time, color, args) {
60 return `${color(`[${level}]`)}${time ? ' ' + time : ''} ${args
61 .map((a) => (typeof a === 'string' ? a : util_1.default.inspect(a, false, 5)))
62 .join(' ')}`;
63 },
64 level: 'debug',
65 };
66 }
67}
68exports.Logger = Logger;
69exports.logger = new Logger();
70//# sourceMappingURL=logger.js.map
\No newline at end of file