@sjts/lib-log 31.0.1 → 31.0.3
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/dist/Logger.d.ts +9 -8
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +63 -27
- package/dist/Logger.test.d.ts +2 -0
- package/dist/Logger.test.d.ts.map +1 -0
- package/dist/Logger.test.js +15 -0
- package/dist/Profiler.d.ts +11 -0
- package/dist/Profiler.d.ts.map +1 -0
- package/dist/Profiler.js +25 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/package.json +4 -2
package/dist/Logger.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { LoggerLevel } from './LoggerLevel.js';
|
|
2
|
-
export type LogListener = (message: string, data?: any) => void;
|
|
3
2
|
export declare class Logger {
|
|
4
3
|
static red: string;
|
|
5
4
|
static green: string;
|
|
@@ -19,14 +18,17 @@ export declare class Logger {
|
|
|
19
18
|
static bgBlue: string;
|
|
20
19
|
static bgMagenta: string;
|
|
21
20
|
static bgCyan: string;
|
|
21
|
+
static lastLogTimestamp: number;
|
|
22
|
+
private static _indent;
|
|
22
23
|
private level;
|
|
23
24
|
private systemTags;
|
|
24
25
|
c: any;
|
|
25
|
-
private static listeners;
|
|
26
26
|
set console(c: any);
|
|
27
27
|
static set console(c: any);
|
|
28
28
|
set logLevel(l: LoggerLevel[]);
|
|
29
29
|
static set logLevel(l: LoggerLevel[]);
|
|
30
|
+
static indent(): void;
|
|
31
|
+
static outdent(): void;
|
|
30
32
|
addDebug(): void;
|
|
31
33
|
static addDebug(): void;
|
|
32
34
|
addSystem(): void;
|
|
@@ -49,12 +51,11 @@ export declare class Logger {
|
|
|
49
51
|
static throw(message: string, data?: any): void;
|
|
50
52
|
kill: (message: string, data?: any) => void;
|
|
51
53
|
static kill(message: string, data?: any): void;
|
|
52
|
-
triggerListeners: (message: string, data?: any) => void;
|
|
53
|
-
static triggerListeners(message: string, data?: any): void;
|
|
54
|
-
addListener: (l: LogListener) => void;
|
|
55
|
-
static addListener(l: LogListener): void;
|
|
56
|
-
removeListener: (l: LogListener) => void;
|
|
57
|
-
static removeListener(l: LogListener): void;
|
|
58
54
|
static instance: Logger;
|
|
55
|
+
private static _openProfiles;
|
|
56
|
+
static startProfiling(key: string): void;
|
|
57
|
+
static stopProfiling(key: string): void;
|
|
58
|
+
static initProfiles(): void;
|
|
59
|
+
static indentMessage(message: string): string;
|
|
59
60
|
}
|
|
60
61
|
//# sourceMappingURL=Logger.d.ts.map
|
package/dist/Logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAI9C,qBAAa,MAAM;IAClB,OAAc,GAAG,SAAa;IAC9B,OAAc,KAAK,SAAa;IAChC,OAAc,MAAM,SAAa;IACjC,OAAc,IAAI,SAAa;IAC/B,OAAc,OAAO,SAAa;IAClC,OAAc,IAAI,SAAa;IAC/B,OAAc,KAAK,SAAY;IAE/B,OAAc,IAAI,SAAY;IAC9B,OAAc,GAAG,SAAY;IAC7B,OAAc,MAAM,SAAY;IAChC,OAAc,SAAS,SAAY;IACnC,OAAc,aAAa,SAAY;IAEvC,OAAc,KAAK,SAAa;IAChC,OAAc,OAAO,SAAa;IAClC,OAAc,QAAQ,SAAa;IACnC,OAAc,MAAM,SAAa;IACjC,OAAc,SAAS,SAAa;IACpC,OAAc,MAAM,SAAa;IAEjC,OAAc,gBAAgB,EAAE,MAAM,CAAI;IAC1C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;IAC1B,OAAO,CAAC,KAAK,CAAkD;IAC/D,OAAO,CAAC,UAAU,CAAe;IAC1B,CAAC,EAAE,GAAG,CAAU;IAEvB,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,EAEjB;IACD,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,EAExB;IAED,IAAI,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,EAE5B;IACD,MAAM,KAAK,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,EAEnC;IAED,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,OAAO;IAId,QAAQ;IAGR,MAAM,CAAC,QAAQ;IAIf,SAAS;IAGT,MAAM,CAAC,SAAS;IAIhB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAG5B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAI5B,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,UASzC;WACY,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAYxC,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,UAAgC;WAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAQxC,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,UAA+B;WAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAOvC,MAAM,GAAI,KAAK,MAAM,EAAE,SAAS,MAAM,EAAE,OAAO,GAAG,UAA+B;WAC1E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAStD,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,UAA+B;WAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IASvC,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,UAAgC;WAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IASxC,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,UAAgC;WAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IASxC,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,UAA+B;WAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAY9C,OAAc,QAAQ,EAAE,MAAM,CAAe;IAK7C,OAAO,CAAC,MAAM,CAAC,aAAa,CAA+D;IAC3F,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM;IAGjC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM;IAShC,MAAM,CAAC,YAAY;IASnB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;CAKpC"}
|
package/dist/Logger.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
1
2
|
import { LoggerLevel } from './LoggerLevel.js';
|
|
2
3
|
const { DEBUG, INFO, SYSTEM, WARN, ERROR, THROW, KILL } = LoggerLevel;
|
|
3
4
|
export class Logger {
|
|
@@ -19,10 +20,11 @@ export class Logger {
|
|
|
19
20
|
static bgBlue = '\x1b[44m';
|
|
20
21
|
static bgMagenta = '\x1b[45m';
|
|
21
22
|
static bgCyan = '\x1b[46m';
|
|
23
|
+
static lastLogTimestamp = 0;
|
|
24
|
+
static _indent = 0;
|
|
22
25
|
level = [INFO, WARN, ERROR, THROW, KILL];
|
|
23
26
|
systemTags = [];
|
|
24
27
|
c = console;
|
|
25
|
-
static listeners = [];
|
|
26
28
|
set console(c) {
|
|
27
29
|
this.c = c;
|
|
28
30
|
}
|
|
@@ -35,6 +37,12 @@ export class Logger {
|
|
|
35
37
|
static set logLevel(l) {
|
|
36
38
|
this.instance.logLevel = l;
|
|
37
39
|
}
|
|
40
|
+
static indent() {
|
|
41
|
+
this._indent++;
|
|
42
|
+
}
|
|
43
|
+
static outdent() {
|
|
44
|
+
this._indent--;
|
|
45
|
+
}
|
|
38
46
|
addDebug() {
|
|
39
47
|
this.level = [...this.level, DEBUG];
|
|
40
48
|
}
|
|
@@ -69,68 +77,96 @@ export class Logger {
|
|
|
69
77
|
}
|
|
70
78
|
debug = (message, data) => Logger.debug(message, data);
|
|
71
79
|
static debug(message, data) {
|
|
80
|
+
Logger.initProfiles();
|
|
81
|
+
const msg = Logger.indentMessage(message);
|
|
72
82
|
if (this.instance.level.includes(DEBUG))
|
|
73
|
-
this.instance.c.log(...(data ? [
|
|
74
|
-
this.
|
|
83
|
+
this.instance.c.log(...(data ? [msg, data] : [msg]));
|
|
84
|
+
this.lastLogTimestamp = DateTime.now().toMillis();
|
|
75
85
|
}
|
|
76
86
|
info = (message, data) => Logger.info(message, data);
|
|
77
87
|
static info(message, data) {
|
|
88
|
+
Logger.initProfiles();
|
|
89
|
+
const msg = Logger.indentMessage(message);
|
|
78
90
|
if (this.instance.level.includes(INFO))
|
|
79
|
-
this.instance.c.log(...(data ? [
|
|
80
|
-
this.
|
|
91
|
+
this.instance.c.log(...(data ? [msg, data] : [msg]));
|
|
92
|
+
this.lastLogTimestamp = DateTime.now().toMillis();
|
|
81
93
|
}
|
|
82
94
|
system = (tag, message, data) => Logger.info(message, data);
|
|
83
95
|
static system(tag, message, data) {
|
|
84
|
-
|
|
96
|
+
Logger.initProfiles();
|
|
97
|
+
const msg = Logger.indentMessage(message);
|
|
98
|
+
const formattedMessage = `${Logger.magenta}${msg}${Logger.reset}`;
|
|
85
99
|
if (this.instance.level.includes(SYSTEM) && this.instance.systemTags.includes(tag))
|
|
86
100
|
this.instance.c.log(...(data ? [formattedMessage, data] : [formattedMessage]));
|
|
87
|
-
this.
|
|
101
|
+
this.lastLogTimestamp = DateTime.now().toMillis();
|
|
88
102
|
}
|
|
89
103
|
warn = (message, data) => Logger.warn(message, data);
|
|
90
104
|
static warn(message, data) {
|
|
91
|
-
|
|
105
|
+
Logger.initProfiles();
|
|
106
|
+
const msg = Logger.indentMessage(message);
|
|
107
|
+
const formattedMessage = `${Logger.yellow}WARN: ${msg}${Logger.reset}`;
|
|
92
108
|
if (this.instance.level.includes(WARN))
|
|
93
109
|
this.instance.c.warn(...(data ? [formattedMessage, data] : [formattedMessage]));
|
|
94
|
-
this.
|
|
110
|
+
this.lastLogTimestamp = DateTime.now().toMillis();
|
|
95
111
|
}
|
|
96
112
|
error = (message, data) => Logger.error(message, data);
|
|
97
113
|
static error(message, data) {
|
|
98
|
-
|
|
114
|
+
Logger.initProfiles();
|
|
115
|
+
const msg = Logger.indentMessage(message);
|
|
116
|
+
const formattedMessage = `${Logger.red}ERROR: ${msg}${Logger.reset}`;
|
|
99
117
|
if (this.instance.level.includes(ERROR))
|
|
100
118
|
this.instance.c.error(...(data ? [formattedMessage, data] : [formattedMessage]));
|
|
101
|
-
this.
|
|
119
|
+
this.lastLogTimestamp = DateTime.now().toMillis();
|
|
102
120
|
}
|
|
103
121
|
throw = (message, data) => Logger.throw(message, data);
|
|
104
122
|
static throw(message, data) {
|
|
105
|
-
|
|
123
|
+
Logger.initProfiles();
|
|
124
|
+
const msg = Logger.indentMessage(message);
|
|
125
|
+
const formattedMessage = `${Logger.red}ERROR: ${msg}${Logger.reset}`;
|
|
106
126
|
if (this.instance.level.includes(THROW))
|
|
107
127
|
this.instance.c.error(...(data ? [formattedMessage, data] : [formattedMessage]));
|
|
108
|
-
this.triggerListeners(message, data);
|
|
109
128
|
throw new Error(message.toString());
|
|
110
129
|
}
|
|
111
130
|
kill = (message, data) => Logger.kill(message, data);
|
|
112
131
|
static kill(message, data) {
|
|
113
|
-
|
|
132
|
+
Logger.initProfiles();
|
|
133
|
+
const msg = Logger.indentMessage(message);
|
|
134
|
+
const formattedMessage = `${Logger.red}ERROR: ${msg}${Logger.reset}`;
|
|
114
135
|
if (this.instance.level.includes(KILL))
|
|
115
136
|
this.instance.c.error(...(data ? [formattedMessage, data] : [formattedMessage]));
|
|
116
|
-
this.
|
|
137
|
+
this.lastLogTimestamp = DateTime.now().toMillis();
|
|
117
138
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
118
139
|
// @ts-ignore
|
|
119
140
|
process.exit(0);
|
|
120
141
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
142
|
+
static instance = new Logger();
|
|
143
|
+
// ------------------------------------------------------------
|
|
144
|
+
// Performance
|
|
145
|
+
// ------------------------------------------------------------
|
|
146
|
+
static _openProfiles = {};
|
|
147
|
+
static startProfiling(key) {
|
|
148
|
+
Logger._openProfiles[key] = { start: DateTime.now().toMillis(), initiated: false };
|
|
149
|
+
}
|
|
150
|
+
static stopProfiling(key) {
|
|
151
|
+
const endTime = DateTime.now().toMillis();
|
|
152
|
+
const duration = endTime - Logger._openProfiles[key].start;
|
|
153
|
+
if (Logger._openProfiles[key].initiated)
|
|
154
|
+
Logger.outdent();
|
|
155
|
+
delete Logger._openProfiles[key];
|
|
156
|
+
Logger.info(`${Logger.blue}${Logger.italic}${key}${Logger.reset} - ${Logger.green}${duration}ms${Logger.reset}`);
|
|
157
|
+
}
|
|
158
|
+
static initProfiles() {
|
|
159
|
+
Object.keys(Logger._openProfiles).forEach(key => {
|
|
160
|
+
if (!Logger._openProfiles[key].initiated) {
|
|
161
|
+
Logger._openProfiles[key].initiated = true;
|
|
162
|
+
Logger.info(`${Logger.blue}${Logger.italic}${key}${Logger.reset}`);
|
|
163
|
+
Logger.indent();
|
|
164
|
+
}
|
|
125
165
|
});
|
|
126
166
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
167
|
+
static indentMessage(message) {
|
|
168
|
+
return Logger._indent > 0
|
|
169
|
+
? `${Logger.dim}${Logger.blue}${'| '.repeat(Logger._indent)}${Logger.reset}${message}`
|
|
170
|
+
: message;
|
|
130
171
|
}
|
|
131
|
-
removeListener = (l) => Logger.removeListener(l);
|
|
132
|
-
static removeListener(l) {
|
|
133
|
-
this.listeners = this.listeners.filter(ll => ll !== l);
|
|
134
|
-
}
|
|
135
|
-
static instance = new Logger();
|
|
136
172
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.test.d.ts","sourceRoot":"","sources":["../src/Logger.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Logger } from './Logger';
|
|
2
|
+
const test = () => {
|
|
3
|
+
Logger.startProfiling('Speed Test');
|
|
4
|
+
Logger.info('ABC');
|
|
5
|
+
Logger.startProfiling('Something');
|
|
6
|
+
Logger.info('DEF');
|
|
7
|
+
Logger.info('GHI');
|
|
8
|
+
Logger.stopProfiling('Something');
|
|
9
|
+
Logger.info('JKL');
|
|
10
|
+
Logger.startProfiling('Something Else');
|
|
11
|
+
Logger.stopProfiling('Something Else');
|
|
12
|
+
Logger.stopProfiling('Speed Test');
|
|
13
|
+
return 100;
|
|
14
|
+
};
|
|
15
|
+
test();
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ProfilerOptions = {
|
|
2
|
+
logAtStart?: boolean;
|
|
3
|
+
};
|
|
4
|
+
export declare class Profiler {
|
|
5
|
+
private label;
|
|
6
|
+
private o;
|
|
7
|
+
private startTime;
|
|
8
|
+
constructor(label: string, o?: ProfilerOptions);
|
|
9
|
+
stop(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=Profiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Profiler.d.ts","sourceRoot":"","sources":["../src/Profiler.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,qBAAa,QAAQ;IAInB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,CAAC;IAJV,OAAO,CAAC,SAAS,CAAQ;gBAGhB,KAAK,EAAE,MAAM,EACb,CAAC,GAAE,eAAuC;IAUnD,IAAI;CAUJ"}
|
package/dist/Profiler.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
import { Logger } from './Logger';
|
|
3
|
+
export class Profiler {
|
|
4
|
+
label;
|
|
5
|
+
o;
|
|
6
|
+
startTime;
|
|
7
|
+
constructor(label, o = { logAtStart: false }) {
|
|
8
|
+
this.label = label;
|
|
9
|
+
this.o = o;
|
|
10
|
+
this.label = label;
|
|
11
|
+
this.startTime = DateTime.now().toMillis();
|
|
12
|
+
if (o.logAtStart) {
|
|
13
|
+
Logger.info(`${label}`);
|
|
14
|
+
Logger.indent();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
stop() {
|
|
18
|
+
const endTime = Date.now();
|
|
19
|
+
const duration = endTime - this.startTime;
|
|
20
|
+
if (this.o.logAtStart) {
|
|
21
|
+
Logger.outdent();
|
|
22
|
+
}
|
|
23
|
+
Logger.info(`${this.label} - ${duration}ms`);
|
|
24
|
+
}
|
|
25
|
+
}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sjts/lib-log",
|
|
3
3
|
"description": "The Steve James Typescript Log package",
|
|
4
|
-
"version": "31.0.
|
|
4
|
+
"version": "31.0.3",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -19,11 +19,13 @@
|
|
|
19
19
|
"clean": "rm -rf dist",
|
|
20
20
|
"release:patch": "yarn version patch && yarn npm publish",
|
|
21
21
|
"release:minor": "yarn version minor && yarn npm publish",
|
|
22
|
-
"release:major": "yarn version major && yarn npm publish"
|
|
22
|
+
"release:major": "yarn version major && yarn npm publish",
|
|
23
|
+
"test": "tsx src/Logger.test.ts"
|
|
23
24
|
},
|
|
24
25
|
"prettier": "@sjts/lib-devops/prettier.json",
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"@sjts/lib-devops": "31.0.1",
|
|
28
|
+
"tsx": "^4.20.6",
|
|
27
29
|
"typescript": "^5.8.3"
|
|
28
30
|
},
|
|
29
31
|
"publishConfig": {
|