1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.logger = exports.Logger = exports.LogLevels = void 0;
|
4 | const tslib_1 = require("tslib");
|
5 | const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
6 | const util_1 = tslib_1.__importDefault(require("util"));
|
7 | const strip_ansi_1 = tslib_1.__importDefault(require("strip-ansi"));
|
8 | const utils_1 = require("./utils");
|
9 | exports.LogLevels = {
|
10 | debug: 0,
|
11 | info: 1,
|
12 | warn: 2,
|
13 | error: 3,
|
14 | };
|
15 | function 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 | }
|
41 | class 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 | }
|
68 | exports.Logger = Logger;
|
69 | exports.logger = new Logger();
|
70 |
|
\ | No newline at end of file |