hermodlog 1.9.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/Logger.js +12 -3
- package/src/Logger.spec.js +16 -2
- package/src/methods/handler.js +6 -0
- package/src/methods/log.js +0 -1
- package/src/utils/colors.js +9 -1
- package/src/utils/log.js +19 -8
- package/usage.example.js +1 -1
- /package/{usage.example copy.js → usage.example2.js} +0 -0
package/package.json
CHANGED
package/src/Logger.js
CHANGED
|
@@ -15,7 +15,7 @@ import fatal from "./methods/fatal.js";
|
|
|
15
15
|
import child from "./methods/child.js";
|
|
16
16
|
import submethod from "./methods/submethod.js";
|
|
17
17
|
import submodule from "./methods/submodule.js";
|
|
18
|
-
|
|
18
|
+
import handler from "./methods/handler.js";
|
|
19
19
|
import LOG_COLORS from "./LOG_COLORS.js";
|
|
20
20
|
import object from "./methods/object.js";
|
|
21
21
|
class Logger {
|
|
@@ -32,7 +32,7 @@ class Logger {
|
|
|
32
32
|
enumerable: false
|
|
33
33
|
},
|
|
34
34
|
historyLimit: {
|
|
35
|
-
value: props.historyLimit ??
|
|
35
|
+
value: props.historyLimit ?? 0,
|
|
36
36
|
writable: true,
|
|
37
37
|
enumerable: true
|
|
38
38
|
},
|
|
@@ -56,6 +56,11 @@ class Logger {
|
|
|
56
56
|
writable: true,
|
|
57
57
|
enumerable: true
|
|
58
58
|
},
|
|
59
|
+
handlerName: {
|
|
60
|
+
value: props.handlerName ?? null,
|
|
61
|
+
writable: true,
|
|
62
|
+
enumerable: true
|
|
63
|
+
},
|
|
59
64
|
listenerName: {
|
|
60
65
|
value: props.listenerName ?? null,
|
|
61
66
|
writable: true,
|
|
@@ -76,7 +81,6 @@ class Logger {
|
|
|
76
81
|
writable: true,
|
|
77
82
|
enumerable: true
|
|
78
83
|
}
|
|
79
|
-
|
|
80
84
|
});
|
|
81
85
|
|
|
82
86
|
if (props.date) {
|
|
@@ -108,11 +112,14 @@ class Logger {
|
|
|
108
112
|
const keepSubmodule = opts?.keepSubmodule ?? true;
|
|
109
113
|
const keepListener = opts?.keepListener ?? true;
|
|
110
114
|
const keepObject = opts?.keepObject ?? true;
|
|
115
|
+
const keepHandler = opts?.keepHandler ?? true;
|
|
116
|
+
const historyLimit = opts?.historyLimit ?? null;
|
|
111
117
|
|
|
112
118
|
return new Logger({
|
|
113
119
|
level: (keepLevel) ? this.level : opts.level ?? this.level,
|
|
114
120
|
date: (keepDate) ? this.date : opts.date ?? null,
|
|
115
121
|
history: keepHistory ? this.history : [],
|
|
122
|
+
historyLimit: historyLimit ?? this.historyLimit,
|
|
116
123
|
colors: (keepColors) ? this.LOG_COLORS : opts.colors ?? this.LOG_COLORS,
|
|
117
124
|
contextName: (keepContext) ? this.contextName : opts.contextName ?? null,
|
|
118
125
|
methodName: (keepMethod) ? this.methodName : opts.methodName ?? null,
|
|
@@ -121,6 +128,7 @@ class Logger {
|
|
|
121
128
|
listenerName: (keepListener) ? this.listenerName : opts.listenerName ?? null,
|
|
122
129
|
submethodName: (keepSubmethod) ? this.submethodName : opts.submethodName ?? null,
|
|
123
130
|
objectName: (keepObject) ? this.objectName : opts.objectName ?? null,
|
|
131
|
+
handlerName: (keepHandler) ? this.handlerName : opts.handlerName ?? null,
|
|
124
132
|
})
|
|
125
133
|
}
|
|
126
134
|
|
|
@@ -169,5 +177,6 @@ Logger.prototype.module = module;
|
|
|
169
177
|
Logger.prototype.trace = trace;
|
|
170
178
|
Logger.prototype.warn = warn;
|
|
171
179
|
Logger.prototype.child = child;
|
|
180
|
+
Logger.prototype.handler = handler;
|
|
172
181
|
|
|
173
182
|
export default Logger;
|
package/src/Logger.spec.js
CHANGED
|
@@ -5,7 +5,7 @@ describe('Logger', () => {
|
|
|
5
5
|
let silentLogger
|
|
6
6
|
let silentModuleLogger
|
|
7
7
|
it('should create an logger', () => {
|
|
8
|
-
silentLogger = new Logger({date:new Date('2023-07-29T01:38:00.482Z')});
|
|
8
|
+
silentLogger = new Logger({date:new Date('2023-07-29T01:38:00.482Z'), historyLimit: 100});
|
|
9
9
|
silentLogger._log = () => {}
|
|
10
10
|
expect(silentLogger.history.length).toBe(0)
|
|
11
11
|
silentLogger.log('Hello');
|
|
@@ -42,7 +42,7 @@ describe('Logger', () => {
|
|
|
42
42
|
expect(silentMethodLogger.history[0]).toBe(expected)
|
|
43
43
|
})
|
|
44
44
|
it('should handle level', function () {
|
|
45
|
-
const levelLogger = new Logger({level: 'error'})
|
|
45
|
+
const levelLogger = new Logger({level: 'error', historyLimit: 100});
|
|
46
46
|
levelLogger._log = () => {}
|
|
47
47
|
levelLogger.error('Hello');
|
|
48
48
|
expect(levelLogger.history.length).toBe(1)
|
|
@@ -67,4 +67,18 @@ describe('Logger', () => {
|
|
|
67
67
|
const expected = `[\u001b[90m2023-07-29T01:38:00.482Z\u001b[0m] module:\u001b[90mtest-module\u001b[0m - \u001b[32mReceived from ws client\u001b[0m \u001b[32mObject(\u001b[0m\u001b[32m{\n \"x\": 42,\n \"y\": {\n \"b\": [\n 1,\n 2,\n 3\n ]\n },\n \"req\": \"getCar\"\n}\u001b[0m\u001b[32m)\u001b[0m`;
|
|
68
68
|
expect(silentModuleLogger.history[1]).toBe(expected)
|
|
69
69
|
});
|
|
70
|
+
|
|
71
|
+
it('should transmit history config to child loggers', () => {
|
|
72
|
+
const parentLogger = new Logger({date:new Date('2023-07-29T01:38:00.482Z'), historyLimit: 123});
|
|
73
|
+
parentLogger._log = () => {}
|
|
74
|
+
parentLogger.log('hello');
|
|
75
|
+
expect(parentLogger.historyLimit).toBe(123)
|
|
76
|
+
expect(parentLogger.history.length).toBe(1)
|
|
77
|
+
|
|
78
|
+
const childLogger = parentLogger.listener('onTest')
|
|
79
|
+
expect(childLogger.historyLimit).toBe(123)
|
|
80
|
+
expect(childLogger.history.length).toBe(0)
|
|
81
|
+
childLogger.log('Hello');
|
|
82
|
+
expect(childLogger.history.length).toBe(1)
|
|
83
|
+
})
|
|
70
84
|
})
|
package/src/methods/log.js
CHANGED
package/src/utils/colors.js
CHANGED
|
@@ -3,15 +3,23 @@ const ESC = '\x1b';
|
|
|
3
3
|
const createColorFn = (code) => (text) => `${ESC}[${code}m${text}${ESC}[0m`;
|
|
4
4
|
|
|
5
5
|
const colors = {
|
|
6
|
-
|
|
6
|
+
black: createColorFn('30'),
|
|
7
7
|
red: createColorFn('31'),
|
|
8
8
|
green: createColorFn('32'),
|
|
9
9
|
yellow: createColorFn('33'),
|
|
10
10
|
blue: createColorFn('34'),
|
|
11
11
|
magenta: createColorFn('35'),
|
|
12
12
|
cyan: createColorFn('36'),
|
|
13
|
+
white: createColorFn('37'),
|
|
13
14
|
// Bright variants
|
|
15
|
+
gray: createColorFn('90'),
|
|
16
|
+
redBright: createColorFn('91'),
|
|
17
|
+
greenBright: createColorFn('92'),
|
|
18
|
+
yellowBright: createColorFn('93'),
|
|
14
19
|
blueBright: createColorFn('94'),
|
|
20
|
+
magentaBright: createColorFn('95'),
|
|
21
|
+
cyanBright: createColorFn('96'),
|
|
22
|
+
whiteBright: createColorFn('97'),
|
|
15
23
|
};
|
|
16
24
|
|
|
17
25
|
export default colors;
|
package/src/utils/log.js
CHANGED
|
@@ -34,6 +34,7 @@ export default function log(level, args, context) {
|
|
|
34
34
|
|
|
35
35
|
const hasContext = !!context.contextName;
|
|
36
36
|
const hasModule = !!context.moduleName;
|
|
37
|
+
const hasHandler = !!context.handlerName;
|
|
37
38
|
const hasListener = !!context.listenerName;
|
|
38
39
|
const hasMethod = !!context.methodName;
|
|
39
40
|
const hasSubmethod = !!context.submethodName;
|
|
@@ -42,7 +43,7 @@ export default function log(level, args, context) {
|
|
|
42
43
|
|
|
43
44
|
if (hasContext) {
|
|
44
45
|
message += ` context: ${colors[2](context.contextName)}`;
|
|
45
|
-
const hasNext = hasModule || hasListener || hasMethod || hasSubmethod || hasSubmodule;
|
|
46
|
+
const hasNext = hasModule || hasHandler || hasListener || hasMethod || hasSubmethod || hasSubmodule;
|
|
46
47
|
if (hasNext) {
|
|
47
48
|
message += ' |';
|
|
48
49
|
}
|
|
@@ -50,7 +51,7 @@ export default function log(level, args, context) {
|
|
|
50
51
|
|
|
51
52
|
if (hasModule) {
|
|
52
53
|
message += ` module:${colors[3](context.moduleName)}`;
|
|
53
|
-
const hasNext = hasListener || hasMethod || hasSubmethod || hasSubmodule;
|
|
54
|
+
const hasNext = hasHandler || hasListener || hasMethod || hasSubmethod || hasSubmodule;
|
|
54
55
|
if (hasNext) {
|
|
55
56
|
message += ' |';
|
|
56
57
|
}
|
|
@@ -58,7 +59,7 @@ export default function log(level, args, context) {
|
|
|
58
59
|
|
|
59
60
|
if (hasSubmodule) {
|
|
60
61
|
message += ` submodule: ${colors[6](context.submoduleName)}`;
|
|
61
|
-
const hasNext = hasListener || hasMethod || hasSubmethod;
|
|
62
|
+
const hasNext = hasHandler || hasListener || hasMethod || hasSubmethod;
|
|
62
63
|
if (hasNext) {
|
|
63
64
|
message += ' |';
|
|
64
65
|
}
|
|
@@ -66,7 +67,7 @@ export default function log(level, args, context) {
|
|
|
66
67
|
|
|
67
68
|
if (hasMethod) {
|
|
68
69
|
message += ` method: ${colors[5](context.methodName)}`;
|
|
69
|
-
const hasNext = hasSubmethod || hasSubmodule;
|
|
70
|
+
const hasNext = hasHandler || hasSubmethod || hasSubmodule;
|
|
70
71
|
if (hasNext) {
|
|
71
72
|
message += ' |';
|
|
72
73
|
}
|
|
@@ -74,7 +75,15 @@ export default function log(level, args, context) {
|
|
|
74
75
|
|
|
75
76
|
if (hasSubmethod) {
|
|
76
77
|
message += ` submethod: ${colors[6](context.submethodName)}`;
|
|
77
|
-
const hasNext = hasListener || hasMethod || hasSubmodule;
|
|
78
|
+
const hasNext = hasHandler || hasListener || hasMethod || hasSubmodule;
|
|
79
|
+
if (hasNext) {
|
|
80
|
+
message += ' |';
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (hasHandler) {
|
|
85
|
+
message += ` handler: ${colors[4](context.handlerName)}`;
|
|
86
|
+
const hasNext = hasListener || hasObject;
|
|
78
87
|
if (hasNext) {
|
|
79
88
|
message += ' |';
|
|
80
89
|
}
|
|
@@ -157,10 +166,12 @@ export default function log(level, args, context) {
|
|
|
157
166
|
}
|
|
158
167
|
}
|
|
159
168
|
|
|
169
|
+
const historyLimit = context?.historyLimit;
|
|
170
|
+
if (historyLimit) {
|
|
160
171
|
context.history.push(message);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
172
|
+
if (context.history.length > historyLimit) {
|
|
173
|
+
context.history.shift();
|
|
174
|
+
}
|
|
164
175
|
}
|
|
165
176
|
|
|
166
177
|
context._log(message);
|
package/usage.example.js
CHANGED
|
File without changes
|