@prosopo/logger 1.0.4 → 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/.turbo/turbo-build$colon$cjs.log +5 -5
- package/.turbo/turbo-build$colon$tsc.log +6 -6
- package/.turbo/turbo-build.log +6 -6
- package/CHANGELOG.md +17 -0
- package/dist/cjs/index.cjs +3 -13
- package/dist/cjs/logger.cjs +65 -20
- package/dist/index.js +4 -11
- package/dist/logger.d.ts +7 -17
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +65 -18
- package/dist/logger.js.map +1 -1
- package/dist/tests/logger.unit.test.js +213 -2
- package/dist/tests/logger.unit.test.js.map +1 -1
- package/package.json +4 -4
- package/src/logger.ts +143 -30
- package/src/tests/logger.unit.test.ts +268 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/logger@
|
|
2
|
+
> @prosopo/logger@2.0.0 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -7,12 +7,12 @@ ViteCommonJSConfig: .
|
|
|
7
7
|
tsConfigPaths: [ '/home/runner/work/captcha/captcha/packages/util/tsconfig.json' ]
|
|
8
8
|
}
|
|
9
9
|
{ externals: [ '@prosopo/util' ] }
|
|
10
|
-
[36mvite v6.4.
|
|
10
|
+
[36mvite v6.4.3 [32mbuilding SSR bundle for production...[36m[39m
|
|
11
11
|
Bundle build started
|
|
12
12
|
transforming...
|
|
13
13
|
Build end
|
|
14
14
|
[32m✓[39m 2 modules transformed.
|
|
15
15
|
rendering chunks...
|
|
16
|
-
[2mdist/cjs/[22m[36mindex.cjs [39m[1m[2m0.
|
|
17
|
-
[2mdist/cjs/[22m[36mlogger.cjs [39m[1m[
|
|
18
|
-
[32m✓ built in
|
|
16
|
+
[2mdist/cjs/[22m[36mindex.cjs [39m[1m[2m0.48 kB[22m[1m[22m
|
|
17
|
+
[2mdist/cjs/[22m[36mlogger.cjs [39m[1m[2m7.09 kB[22m[1m[22m
|
|
18
|
+
[32m✓ built in 155ms[39m
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/logger@
|
|
2
|
+
> @prosopo/logger@2.0.0 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
3:24:17 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../util/tsconfig.json
|
|
8
8
|
* tsconfig.json
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
3:24:17 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
3:24:17 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
3:24:17 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
3:24:17 PM - Building project '/home/runner/work/captcha/captcha/packages/logger/tsconfig.json'...
|
|
17
17
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/logger@
|
|
2
|
+
> @prosopo/logger@2.0.0 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/logger@
|
|
6
|
+
> @prosopo/logger@2.0.0 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -11,12 +11,12 @@ ViteEsmConfig: .
|
|
|
11
11
|
tsConfigPaths: [ '/home/runner/work/captcha/captcha/packages/util/tsconfig.json' ]
|
|
12
12
|
}
|
|
13
13
|
{ externals: [ '@prosopo/util' ] }
|
|
14
|
-
[36mvite v6.4.
|
|
14
|
+
[36mvite v6.4.3 [32mbuilding SSR bundle for production...[36m[39m
|
|
15
15
|
Bundle build started
|
|
16
16
|
transforming...
|
|
17
17
|
Build end
|
|
18
18
|
[32m✓[39m 2 modules transformed.
|
|
19
19
|
rendering chunks...
|
|
20
|
-
[2mdist/[22m[36mindex.js [39m[1m[2m0.
|
|
21
|
-
[2mdist/[22m[36mlogger.js [39m[1m[
|
|
22
|
-
[32m✓ built in
|
|
20
|
+
[2mdist/[22m[36mindex.js [39m[1m[2m0.28 kB[22m[1m[22m
|
|
21
|
+
[2mdist/[22m[36mlogger.js [39m[1m[2m6.84 kB[22m[1m[22m
|
|
22
|
+
[32m✓ built in 196ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @prosopo/logger
|
|
2
2
|
|
|
3
|
+
## 2.0.0
|
|
4
|
+
### Major Changes
|
|
5
|
+
|
|
6
|
+
- 41e0e11: Tighten @prosopo/logger public exports: drop the stringifyBigInts re-export (import it from @prosopo/util instead) and stop exporting internal-only symbols (level/format string constants and LevelMap).
|
|
7
|
+
|
|
8
|
+
### Minor Changes
|
|
9
|
+
|
|
10
|
+
- 948d36b: Add directive-based scope filtering via PROSOPO_LOG_LEVEL and subscope support to with(). PROSOPO_LOG_LEVEL now accepts comma-separated directives like "warn,database=trace" to set per-scope log levels. Directives are resolved at print time, so child loggers created via with() pick up directive changes made after construction (e.g. via setGlobalDirectives) instead of having the level resolved at with() time baked in.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 7ebb78f: chore(deps-dev): bump vite from 6.4.1 to 6.4.3 in /packages/logger
|
|
15
|
+
- 3c80664: Trim whitespace from subscopes in Logger.with so they match directive keys, and clarify the with() JSDoc to describe the snapshot-at-creation level plus emit-time directive re-resolution.
|
|
16
|
+
- Updated dependencies [849af99]
|
|
17
|
+
- Updated dependencies [a5ba27b]
|
|
18
|
+
- @prosopo/util@3.3.2
|
|
19
|
+
|
|
3
20
|
## 1.0.4
|
|
4
21
|
### Patch Changes
|
|
5
22
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const logger = require("./logger.cjs");
|
|
4
|
-
const util = require("@prosopo/util");
|
|
5
|
-
exports.DebugLevel = logger.DebugLevel;
|
|
6
|
-
exports.ErrorLevel = logger.ErrorLevel;
|
|
7
|
-
exports.FatalLevel = logger.FatalLevel;
|
|
8
4
|
exports.Format = logger.Format;
|
|
9
|
-
exports.FormatJson = logger.FormatJson;
|
|
10
|
-
exports.FormatPlain = logger.FormatPlain;
|
|
11
|
-
exports.InfoLevel = logger.InfoLevel;
|
|
12
5
|
exports.LogLevel = logger.LogLevel;
|
|
13
6
|
exports.NativeLogger = logger.NativeLogger;
|
|
14
|
-
exports.TraceLevel = logger.TraceLevel;
|
|
15
|
-
exports.WarnLevel = logger.WarnLevel;
|
|
16
7
|
exports.getLogger = logger.getLogger;
|
|
8
|
+
exports.parseDirectives = logger.parseDirectives;
|
|
17
9
|
exports.parseLogLevel = logger.parseLogLevel;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
get: () => util.stringifyBigInts
|
|
21
|
-
});
|
|
10
|
+
exports.resolveLevel = logger.resolveLevel;
|
|
11
|
+
exports.setGlobalDirectives = logger.setGlobalDirectives;
|
package/dist/cjs/logger.cjs
CHANGED
|
@@ -25,8 +25,54 @@ const logLevelMap = {
|
|
|
25
25
|
[FatalLevel]: 5
|
|
26
26
|
};
|
|
27
27
|
function parseLogLevel(level, or = InfoLevel) {
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
if (!level) return or;
|
|
29
|
+
for (const part of level.split(",")) {
|
|
30
|
+
const trimmed = part.trim();
|
|
31
|
+
if (trimmed && !trimmed.includes("=")) {
|
|
32
|
+
const parsed = LogLevel.safeParse(trimmed);
|
|
33
|
+
if (parsed.success) return parsed.data;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return or;
|
|
37
|
+
}
|
|
38
|
+
function parseDirectives(raw) {
|
|
39
|
+
const map = /* @__PURE__ */ new Map();
|
|
40
|
+
for (const part of raw.split(",")) {
|
|
41
|
+
const trimmed = part.trim();
|
|
42
|
+
if (!trimmed) continue;
|
|
43
|
+
const eqIdx = trimmed.indexOf("=");
|
|
44
|
+
if (eqIdx === -1) {
|
|
45
|
+
const parsed = LogLevel.safeParse(trimmed);
|
|
46
|
+
if (parsed.success) map.set("", parsed.data);
|
|
47
|
+
} else {
|
|
48
|
+
const scope = trimmed.slice(0, eqIdx).trim();
|
|
49
|
+
if (!scope) continue;
|
|
50
|
+
const parsed = LogLevel.safeParse(trimmed.slice(eqIdx + 1).trim());
|
|
51
|
+
if (parsed.success) map.set(scope, parsed.data);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return map;
|
|
55
|
+
}
|
|
56
|
+
function resolveLevel(scope, directives, fallback) {
|
|
57
|
+
if (directives.has(scope)) return directives.get(scope);
|
|
58
|
+
const parts = scope.split(":");
|
|
59
|
+
for (let i = parts.length - 1; i > 0; i--) {
|
|
60
|
+
const prefix = parts.slice(0, i).join(":");
|
|
61
|
+
if (directives.has(prefix)) return directives.get(prefix);
|
|
62
|
+
}
|
|
63
|
+
if (directives.has("")) return directives.get("");
|
|
64
|
+
return fallback;
|
|
65
|
+
}
|
|
66
|
+
let _globalDirectives;
|
|
67
|
+
function getGlobalDirectives() {
|
|
68
|
+
if (!_globalDirectives) {
|
|
69
|
+
const raw = typeof process !== "undefined" ? process.env?.PROSOPO_LOG_LEVEL ?? "" : "";
|
|
70
|
+
_globalDirectives = parseDirectives(raw);
|
|
71
|
+
}
|
|
72
|
+
return _globalDirectives;
|
|
73
|
+
}
|
|
74
|
+
function setGlobalDirectives(raw) {
|
|
75
|
+
_globalDirectives = parseDirectives(raw);
|
|
30
76
|
}
|
|
31
77
|
function getLogger(logLevel, scope) {
|
|
32
78
|
const logger = new NativeLogger(scope);
|
|
@@ -45,7 +91,6 @@ class NativeLogger {
|
|
|
45
91
|
this.printStack = false;
|
|
46
92
|
this.format = FormatJson;
|
|
47
93
|
this.level = InfoLevel;
|
|
48
|
-
this.levelNum = this.levelMap[this.level];
|
|
49
94
|
}
|
|
50
95
|
setFormat(format) {
|
|
51
96
|
this.format = format;
|
|
@@ -56,9 +101,18 @@ class NativeLogger {
|
|
|
56
101
|
getFormat() {
|
|
57
102
|
return this.format;
|
|
58
103
|
}
|
|
59
|
-
with(obj) {
|
|
60
|
-
const
|
|
61
|
-
|
|
104
|
+
with(obj, subscope) {
|
|
105
|
+
const trimmedSubscope = subscope?.trim();
|
|
106
|
+
const newScope = trimmedSubscope ? this.scope ? `${this.scope}:${trimmedSubscope}` : trimmedSubscope : this.scope;
|
|
107
|
+
const newLogger = new NativeLogger(newScope, this.levelMap);
|
|
108
|
+
const hasObjData = Object.keys(obj).length > 0;
|
|
109
|
+
if (hasObjData) {
|
|
110
|
+
newLogger.defaultData = { ...this.defaultData, ...obj };
|
|
111
|
+
} else if (this.defaultData) {
|
|
112
|
+
newLogger.defaultData = this.defaultData;
|
|
113
|
+
}
|
|
114
|
+
newLogger.setPretty(this.getPretty());
|
|
115
|
+
newLogger.setPrintStack(this.getPrintStack());
|
|
62
116
|
newLogger.setLogLevel(this.getLogLevel());
|
|
63
117
|
return newLogger;
|
|
64
118
|
}
|
|
@@ -79,7 +133,6 @@ class NativeLogger {
|
|
|
79
133
|
}
|
|
80
134
|
setLogLevel(level) {
|
|
81
135
|
this.level = level;
|
|
82
|
-
this.levelNum = this.levelMap[level];
|
|
83
136
|
}
|
|
84
137
|
getLogLevel() {
|
|
85
138
|
return this.level;
|
|
@@ -107,7 +160,8 @@ class NativeLogger {
|
|
|
107
160
|
return { msg, data };
|
|
108
161
|
}
|
|
109
162
|
print(dest, fn, level) {
|
|
110
|
-
|
|
163
|
+
const effectiveLevelNum = this.levelMap[resolveLevel(this.scope, getGlobalDirectives(), this.level)];
|
|
164
|
+
if (this.levelMap[level] < effectiveLevelNum) {
|
|
111
165
|
return;
|
|
112
166
|
}
|
|
113
167
|
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -194,20 +248,11 @@ class NativeLogger {
|
|
|
194
248
|
}
|
|
195
249
|
}
|
|
196
250
|
}
|
|
197
|
-
Object.defineProperty(exports, "stringifyBigInts", {
|
|
198
|
-
enumerable: true,
|
|
199
|
-
get: () => util.stringifyBigInts
|
|
200
|
-
});
|
|
201
|
-
exports.DebugLevel = DebugLevel;
|
|
202
|
-
exports.ErrorLevel = ErrorLevel;
|
|
203
|
-
exports.FatalLevel = FatalLevel;
|
|
204
251
|
exports.Format = Format;
|
|
205
|
-
exports.FormatJson = FormatJson;
|
|
206
|
-
exports.FormatPlain = FormatPlain;
|
|
207
|
-
exports.InfoLevel = InfoLevel;
|
|
208
252
|
exports.LogLevel = LogLevel;
|
|
209
253
|
exports.NativeLogger = NativeLogger;
|
|
210
|
-
exports.TraceLevel = TraceLevel;
|
|
211
|
-
exports.WarnLevel = WarnLevel;
|
|
212
254
|
exports.getLogger = getLogger;
|
|
255
|
+
exports.parseDirectives = parseDirectives;
|
|
213
256
|
exports.parseLogLevel = parseLogLevel;
|
|
257
|
+
exports.resolveLevel = resolveLevel;
|
|
258
|
+
exports.setGlobalDirectives = setGlobalDirectives;
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { stringifyBigInts } from "@prosopo/util";
|
|
1
|
+
import { Format, LogLevel, NativeLogger, getLogger, parseDirectives, parseLogLevel, resolveLevel, setGlobalDirectives } from "./logger.js";
|
|
3
2
|
export {
|
|
4
|
-
DebugLevel,
|
|
5
|
-
ErrorLevel,
|
|
6
|
-
FatalLevel,
|
|
7
3
|
Format,
|
|
8
|
-
FormatJson,
|
|
9
|
-
FormatPlain,
|
|
10
|
-
InfoLevel,
|
|
11
4
|
LogLevel,
|
|
12
5
|
NativeLogger,
|
|
13
|
-
TraceLevel,
|
|
14
|
-
WarnLevel,
|
|
15
6
|
getLogger,
|
|
7
|
+
parseDirectives,
|
|
16
8
|
parseLogLevel,
|
|
17
|
-
|
|
9
|
+
resolveLevel,
|
|
10
|
+
setGlobalDirectives
|
|
18
11
|
};
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { stringifyBigInts } from "@prosopo/util";
|
|
2
1
|
import { z } from "zod";
|
|
3
|
-
export { stringifyBigInts };
|
|
4
2
|
export type LogObject = object;
|
|
5
3
|
export type LogRecord = {
|
|
6
4
|
err?: unknown;
|
|
@@ -19,7 +17,7 @@ export type Logger = {
|
|
|
19
17
|
error(fn: LogRecordFn): void;
|
|
20
18
|
fatal(fn: LogRecordFn): void;
|
|
21
19
|
log(level: LogLevel, fn: LogRecordFn): void;
|
|
22
|
-
with(obj: LogObject): Logger;
|
|
20
|
+
with(obj: LogObject, subscope?: string): Logger;
|
|
23
21
|
getPretty(): boolean;
|
|
24
22
|
setPretty(pretty: boolean): void;
|
|
25
23
|
getPrintStack(): boolean;
|
|
@@ -27,21 +25,14 @@ export type Logger = {
|
|
|
27
25
|
getFormat(): Format;
|
|
28
26
|
setFormat(format: Format): void;
|
|
29
27
|
};
|
|
30
|
-
export declare const InfoLevel = "info";
|
|
31
|
-
export declare const DebugLevel = "debug";
|
|
32
|
-
export declare const TraceLevel = "trace";
|
|
33
|
-
export declare const WarnLevel = "warn";
|
|
34
|
-
export declare const ErrorLevel = "error";
|
|
35
|
-
export declare const FatalLevel = "fatal";
|
|
36
28
|
export declare const LogLevel: z.ZodEnum<["info", "debug", "trace", "warn", "error", "fatal"]>;
|
|
37
29
|
export type LogLevel = z.infer<typeof LogLevel>;
|
|
38
|
-
export type LevelMap = {
|
|
39
|
-
[K in LogLevel]: number;
|
|
40
|
-
};
|
|
41
30
|
export declare function parseLogLevel(level: string | undefined, or?: LogLevel): LogLevel;
|
|
31
|
+
export type Directives = Map<string, LogLevel>;
|
|
32
|
+
export declare function parseDirectives(raw: string): Directives;
|
|
33
|
+
export declare function resolveLevel(scope: string, directives: Directives, fallback: LogLevel): LogLevel;
|
|
34
|
+
export declare function setGlobalDirectives(raw: string): void;
|
|
42
35
|
export declare function getLogger(logLevel: LogLevel, scope: string): Logger;
|
|
43
|
-
export declare const FormatJson = "json";
|
|
44
|
-
export declare const FormatPlain = "plain";
|
|
45
36
|
export declare const Format: z.ZodEnum<["json", "plain"]>;
|
|
46
37
|
export type Format = z.infer<typeof Format>;
|
|
47
38
|
export declare class NativeLogger implements Logger {
|
|
@@ -49,14 +40,13 @@ export declare class NativeLogger implements Logger {
|
|
|
49
40
|
private levelMap;
|
|
50
41
|
private defaultData;
|
|
51
42
|
private level;
|
|
52
|
-
private levelNum;
|
|
53
43
|
private pretty;
|
|
54
44
|
private printStack;
|
|
55
45
|
private format;
|
|
56
|
-
constructor(scope: string, levelMap?:
|
|
46
|
+
constructor(scope: string, levelMap?: Record<LogLevel, number>);
|
|
57
47
|
setFormat(format: Format): void;
|
|
58
48
|
getFormat(): Format;
|
|
59
|
-
with(obj: LogObject): Logger;
|
|
49
|
+
with(obj: LogObject, subscope?: string): Logger;
|
|
60
50
|
getPrintStack(): boolean;
|
|
61
51
|
setPrintStack(printStack: boolean): void;
|
|
62
52
|
getPretty(): boolean;
|
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":"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"}
|
package/dist/logger.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { stringifyBigInts } from "@prosopo/util";
|
|
2
|
-
import { stringifyBigInts as stringifyBigInts2 } from "@prosopo/util";
|
|
3
2
|
import { z } from "zod";
|
|
4
3
|
const InfoLevel = "info";
|
|
5
4
|
const DebugLevel = "debug";
|
|
@@ -24,8 +23,54 @@ const logLevelMap = {
|
|
|
24
23
|
[FatalLevel]: 5
|
|
25
24
|
};
|
|
26
25
|
function parseLogLevel(level, or = InfoLevel) {
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
if (!level) return or;
|
|
27
|
+
for (const part of level.split(",")) {
|
|
28
|
+
const trimmed = part.trim();
|
|
29
|
+
if (trimmed && !trimmed.includes("=")) {
|
|
30
|
+
const parsed = LogLevel.safeParse(trimmed);
|
|
31
|
+
if (parsed.success) return parsed.data;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return or;
|
|
35
|
+
}
|
|
36
|
+
function parseDirectives(raw) {
|
|
37
|
+
const map = /* @__PURE__ */ new Map();
|
|
38
|
+
for (const part of raw.split(",")) {
|
|
39
|
+
const trimmed = part.trim();
|
|
40
|
+
if (!trimmed) continue;
|
|
41
|
+
const eqIdx = trimmed.indexOf("=");
|
|
42
|
+
if (eqIdx === -1) {
|
|
43
|
+
const parsed = LogLevel.safeParse(trimmed);
|
|
44
|
+
if (parsed.success) map.set("", parsed.data);
|
|
45
|
+
} else {
|
|
46
|
+
const scope = trimmed.slice(0, eqIdx).trim();
|
|
47
|
+
if (!scope) continue;
|
|
48
|
+
const parsed = LogLevel.safeParse(trimmed.slice(eqIdx + 1).trim());
|
|
49
|
+
if (parsed.success) map.set(scope, parsed.data);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return map;
|
|
53
|
+
}
|
|
54
|
+
function resolveLevel(scope, directives, fallback) {
|
|
55
|
+
if (directives.has(scope)) return directives.get(scope);
|
|
56
|
+
const parts = scope.split(":");
|
|
57
|
+
for (let i = parts.length - 1; i > 0; i--) {
|
|
58
|
+
const prefix = parts.slice(0, i).join(":");
|
|
59
|
+
if (directives.has(prefix)) return directives.get(prefix);
|
|
60
|
+
}
|
|
61
|
+
if (directives.has("")) return directives.get("");
|
|
62
|
+
return fallback;
|
|
63
|
+
}
|
|
64
|
+
let _globalDirectives;
|
|
65
|
+
function getGlobalDirectives() {
|
|
66
|
+
if (!_globalDirectives) {
|
|
67
|
+
const raw = typeof process !== "undefined" ? process.env?.PROSOPO_LOG_LEVEL ?? "" : "";
|
|
68
|
+
_globalDirectives = parseDirectives(raw);
|
|
69
|
+
}
|
|
70
|
+
return _globalDirectives;
|
|
71
|
+
}
|
|
72
|
+
function setGlobalDirectives(raw) {
|
|
73
|
+
_globalDirectives = parseDirectives(raw);
|
|
29
74
|
}
|
|
30
75
|
function getLogger(logLevel, scope) {
|
|
31
76
|
const logger = new NativeLogger(scope);
|
|
@@ -44,7 +89,6 @@ class NativeLogger {
|
|
|
44
89
|
this.printStack = false;
|
|
45
90
|
this.format = FormatJson;
|
|
46
91
|
this.level = InfoLevel;
|
|
47
|
-
this.levelNum = this.levelMap[this.level];
|
|
48
92
|
}
|
|
49
93
|
setFormat(format) {
|
|
50
94
|
this.format = format;
|
|
@@ -55,9 +99,18 @@ class NativeLogger {
|
|
|
55
99
|
getFormat() {
|
|
56
100
|
return this.format;
|
|
57
101
|
}
|
|
58
|
-
with(obj) {
|
|
59
|
-
const
|
|
60
|
-
|
|
102
|
+
with(obj, subscope) {
|
|
103
|
+
const trimmedSubscope = subscope?.trim();
|
|
104
|
+
const newScope = trimmedSubscope ? this.scope ? `${this.scope}:${trimmedSubscope}` : trimmedSubscope : this.scope;
|
|
105
|
+
const newLogger = new NativeLogger(newScope, this.levelMap);
|
|
106
|
+
const hasObjData = Object.keys(obj).length > 0;
|
|
107
|
+
if (hasObjData) {
|
|
108
|
+
newLogger.defaultData = { ...this.defaultData, ...obj };
|
|
109
|
+
} else if (this.defaultData) {
|
|
110
|
+
newLogger.defaultData = this.defaultData;
|
|
111
|
+
}
|
|
112
|
+
newLogger.setPretty(this.getPretty());
|
|
113
|
+
newLogger.setPrintStack(this.getPrintStack());
|
|
61
114
|
newLogger.setLogLevel(this.getLogLevel());
|
|
62
115
|
return newLogger;
|
|
63
116
|
}
|
|
@@ -78,7 +131,6 @@ class NativeLogger {
|
|
|
78
131
|
}
|
|
79
132
|
setLogLevel(level) {
|
|
80
133
|
this.level = level;
|
|
81
|
-
this.levelNum = this.levelMap[level];
|
|
82
134
|
}
|
|
83
135
|
getLogLevel() {
|
|
84
136
|
return this.level;
|
|
@@ -106,7 +158,8 @@ class NativeLogger {
|
|
|
106
158
|
return { msg, data };
|
|
107
159
|
}
|
|
108
160
|
print(dest, fn, level) {
|
|
109
|
-
|
|
161
|
+
const effectiveLevelNum = this.levelMap[resolveLevel(this.scope, getGlobalDirectives(), this.level)];
|
|
162
|
+
if (this.levelMap[level] < effectiveLevelNum) {
|
|
110
163
|
return;
|
|
111
164
|
}
|
|
112
165
|
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -194,18 +247,12 @@ class NativeLogger {
|
|
|
194
247
|
}
|
|
195
248
|
}
|
|
196
249
|
export {
|
|
197
|
-
DebugLevel,
|
|
198
|
-
ErrorLevel,
|
|
199
|
-
FatalLevel,
|
|
200
250
|
Format,
|
|
201
|
-
FormatJson,
|
|
202
|
-
FormatPlain,
|
|
203
|
-
InfoLevel,
|
|
204
251
|
LogLevel,
|
|
205
252
|
NativeLogger,
|
|
206
|
-
TraceLevel,
|
|
207
|
-
WarnLevel,
|
|
208
253
|
getLogger,
|
|
254
|
+
parseDirectives,
|
|
209
255
|
parseLogLevel,
|
|
210
|
-
|
|
256
|
+
resolveLevel,
|
|
257
|
+
setGlobalDirectives
|
|
211
258
|
};
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|