@hydranium/protocol 1.0.0-next.189 → 1.0.0-next.192
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/lib/logger.d.ts +22 -1
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js +31 -3
- package/lib/logger.js.map +1 -1
- package/package.json +1 -1
- package/src/logger.ts +28 -2
package/lib/logger.d.ts
CHANGED
|
@@ -74,7 +74,23 @@ export declare namespace Logger {
|
|
|
74
74
|
/** Read the current process-wide log threshold. */
|
|
75
75
|
function getLevel(): LogThreshold;
|
|
76
76
|
/**
|
|
77
|
-
*
|
|
77
|
+
* Set the log file's own threshold, which {@link setLevel} does not move;
|
|
78
|
+
* `undefined` makes the file follow {@link getLevel}. A file sink compares
|
|
79
|
+
* against `getFileLevel() ?? getLevel()`, every other sink against
|
|
80
|
+
* {@link getLevel}.
|
|
81
|
+
*
|
|
82
|
+
* Set it through the file sink's own configuration, which clears it with
|
|
83
|
+
* the file: set here with no file configured, it widens
|
|
84
|
+
* {@link isLevelEnabled} for lines nothing writes.
|
|
85
|
+
*/
|
|
86
|
+
function setFileLevel(level: LogThreshold | undefined): void;
|
|
87
|
+
/** Read the log file's own threshold, `undefined` while it follows {@link getLevel}. */
|
|
88
|
+
function getFileLevel(): LogThreshold | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Whether any sink takes a message at `level`: the more verbose of
|
|
91
|
+
* {@link getLevel} and {@link getFileLevel} decides. A sink that admits less
|
|
92
|
+
* re-checks its own threshold before writing.
|
|
93
|
+
*
|
|
78
94
|
* Use to guard expensive log-line construction:
|
|
79
95
|
* `if (Logger.isLevelEnabled('trace')) logger.trace(buildPayload())`.
|
|
80
96
|
*/
|
|
@@ -105,6 +121,11 @@ export declare function parseLogLevel(value: unknown): LogThreshold | undefined;
|
|
|
105
121
|
export declare const DEFAULT_LOG_LEVEL_ENV = "HYDRANIUM_LOG_LEVEL";
|
|
106
122
|
/** Env var the server reads its log file-tee target from. See {@link DEFAULT_LOG_LEVEL_ENV}. */
|
|
107
123
|
export declare const DEFAULT_LOG_FILE_ENV = "HYDRANIUM_LOG_FILE";
|
|
124
|
+
/**
|
|
125
|
+
* Env var the server reads the file tee's own threshold from, which the LSP
|
|
126
|
+
* log-level setting does not change. See {@link Logger.setFileLevel}.
|
|
127
|
+
*/
|
|
128
|
+
export declare const DEFAULT_LOG_FILE_LEVEL_ENV = "HYDRANIUM_LOG_FILE_LEVEL";
|
|
108
129
|
/**
|
|
109
130
|
* Human-readable formatting helpers used in log lines and diagnostic output.
|
|
110
131
|
*/
|
package/lib/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE5C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAA8D,CAAC;AAEpH,uGAAuG;AACvG,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAMjD,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/lib/logger.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* SPDX-License-Identifier: MIT
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.Format = exports.DEFAULT_LOG_FILE_ENV = exports.DEFAULT_LOG_LEVEL_ENV = exports.Logger = exports.LEVEL_LABELS = exports.LEVEL_ORDER = void 0;
|
|
11
|
+
exports.Format = exports.DEFAULT_LOG_FILE_LEVEL_ENV = exports.DEFAULT_LOG_FILE_ENV = exports.DEFAULT_LOG_LEVEL_ENV = exports.Logger = exports.LEVEL_LABELS = exports.LEVEL_ORDER = void 0;
|
|
12
12
|
exports.isLogThreshold = isLogThreshold;
|
|
13
13
|
exports.parseLogLevel = parseLogLevel;
|
|
14
14
|
exports.LEVEL_ORDER = { off: 0, error: 1, warn: 2, info: 3, debug: 4, trace: 5 };
|
|
@@ -23,6 +23,7 @@ exports.LEVEL_LABELS = {
|
|
|
23
23
|
/** Module-global threshold; shared by every `AbstractLogger` instance so derived child
|
|
24
24
|
* loggers pick up live updates without each having to subscribe to a configuration source. */
|
|
25
25
|
let currentLevel = 'info';
|
|
26
|
+
let fileLevel;
|
|
26
27
|
/**
|
|
27
28
|
* Companion namespace for the {@link Logger} interface holding global
|
|
28
29
|
* threshold configuration.
|
|
@@ -46,12 +47,34 @@ var Logger;
|
|
|
46
47
|
}
|
|
47
48
|
Logger.getLevel = getLevel;
|
|
48
49
|
/**
|
|
49
|
-
*
|
|
50
|
+
* Set the log file's own threshold, which {@link setLevel} does not move;
|
|
51
|
+
* `undefined` makes the file follow {@link getLevel}. A file sink compares
|
|
52
|
+
* against `getFileLevel() ?? getLevel()`, every other sink against
|
|
53
|
+
* {@link getLevel}.
|
|
54
|
+
*
|
|
55
|
+
* Set it through the file sink's own configuration, which clears it with
|
|
56
|
+
* the file: set here with no file configured, it widens
|
|
57
|
+
* {@link isLevelEnabled} for lines nothing writes.
|
|
58
|
+
*/
|
|
59
|
+
function setFileLevel(level) {
|
|
60
|
+
fileLevel = level;
|
|
61
|
+
}
|
|
62
|
+
Logger.setFileLevel = setFileLevel;
|
|
63
|
+
/** Read the log file's own threshold, `undefined` while it follows {@link getLevel}. */
|
|
64
|
+
function getFileLevel() {
|
|
65
|
+
return fileLevel;
|
|
66
|
+
}
|
|
67
|
+
Logger.getFileLevel = getFileLevel;
|
|
68
|
+
/**
|
|
69
|
+
* Whether any sink takes a message at `level`: the more verbose of
|
|
70
|
+
* {@link getLevel} and {@link getFileLevel} decides. A sink that admits less
|
|
71
|
+
* re-checks its own threshold before writing.
|
|
72
|
+
*
|
|
50
73
|
* Use to guard expensive log-line construction:
|
|
51
74
|
* `if (Logger.isLevelEnabled('trace')) logger.trace(buildPayload())`.
|
|
52
75
|
*/
|
|
53
76
|
function isLevelEnabled(level) {
|
|
54
|
-
return exports.LEVEL_ORDER[level] <= exports.LEVEL_ORDER[currentLevel];
|
|
77
|
+
return exports.LEVEL_ORDER[level] <= Math.max(exports.LEVEL_ORDER[currentLevel], fileLevel ? exports.LEVEL_ORDER[fileLevel] : 0);
|
|
55
78
|
}
|
|
56
79
|
Logger.isLevelEnabled = isLevelEnabled;
|
|
57
80
|
/**
|
|
@@ -88,6 +111,11 @@ function parseLogLevel(value) {
|
|
|
88
111
|
exports.DEFAULT_LOG_LEVEL_ENV = 'HYDRANIUM_LOG_LEVEL';
|
|
89
112
|
/** Env var the server reads its log file-tee target from. See {@link DEFAULT_LOG_LEVEL_ENV}. */
|
|
90
113
|
exports.DEFAULT_LOG_FILE_ENV = 'HYDRANIUM_LOG_FILE';
|
|
114
|
+
/**
|
|
115
|
+
* Env var the server reads the file tee's own threshold from, which the LSP
|
|
116
|
+
* log-level setting does not change. See {@link Logger.setFileLevel}.
|
|
117
|
+
*/
|
|
118
|
+
exports.DEFAULT_LOG_FILE_LEVEL_ENV = 'HYDRANIUM_LOG_FILE_LEVEL';
|
|
91
119
|
/**
|
|
92
120
|
* Human-readable formatting helpers used in log lines and diagnostic output.
|
|
93
121
|
*/
|
package/lib/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA;;;;;;;kFAOkF;;;;;AAKrE,QAAA,WAAW,GAAiC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAEpH,uGAAuG;AAC1F,QAAA,YAAY,GAA6B;IACnD,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CAChB,CAAC;AAEF;+FAC+F;AAC/F,IAAI,YAAY,GAAiB,MAAM,CAAC;AAkDxC;;;;;;;;;GASG;AACH,IAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/logger.ts
CHANGED
|
@@ -24,6 +24,7 @@ export const LEVEL_LABELS: Record<LogLevel, string> = {
|
|
|
24
24
|
/** Module-global threshold; shared by every `AbstractLogger` instance so derived child
|
|
25
25
|
* loggers pick up live updates without each having to subscribe to a configuration source. */
|
|
26
26
|
let currentLevel: LogThreshold = 'info';
|
|
27
|
+
let fileLevel: LogThreshold | undefined;
|
|
27
28
|
|
|
28
29
|
/**
|
|
29
30
|
* Cross-side public logger contract. Every consumer of the framework — browser
|
|
@@ -93,12 +94,32 @@ export namespace Logger {
|
|
|
93
94
|
return currentLevel;
|
|
94
95
|
}
|
|
95
96
|
/**
|
|
96
|
-
*
|
|
97
|
+
* Set the log file's own threshold, which {@link setLevel} does not move;
|
|
98
|
+
* `undefined` makes the file follow {@link getLevel}. A file sink compares
|
|
99
|
+
* against `getFileLevel() ?? getLevel()`, every other sink against
|
|
100
|
+
* {@link getLevel}.
|
|
101
|
+
*
|
|
102
|
+
* Set it through the file sink's own configuration, which clears it with
|
|
103
|
+
* the file: set here with no file configured, it widens
|
|
104
|
+
* {@link isLevelEnabled} for lines nothing writes.
|
|
105
|
+
*/
|
|
106
|
+
export function setFileLevel(level: LogThreshold | undefined): void {
|
|
107
|
+
fileLevel = level;
|
|
108
|
+
}
|
|
109
|
+
/** Read the log file's own threshold, `undefined` while it follows {@link getLevel}. */
|
|
110
|
+
export function getFileLevel(): LogThreshold | undefined {
|
|
111
|
+
return fileLevel;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Whether any sink takes a message at `level`: the more verbose of
|
|
115
|
+
* {@link getLevel} and {@link getFileLevel} decides. A sink that admits less
|
|
116
|
+
* re-checks its own threshold before writing.
|
|
117
|
+
*
|
|
97
118
|
* Use to guard expensive log-line construction:
|
|
98
119
|
* `if (Logger.isLevelEnabled('trace')) logger.trace(buildPayload())`.
|
|
99
120
|
*/
|
|
100
121
|
export function isLevelEnabled(level: LogLevel): boolean {
|
|
101
|
-
return LEVEL_ORDER[level] <= LEVEL_ORDER[currentLevel];
|
|
122
|
+
return LEVEL_ORDER[level] <= Math.max(LEVEL_ORDER[currentLevel], fileLevel ? LEVEL_ORDER[fileLevel] : 0);
|
|
102
123
|
}
|
|
103
124
|
/**
|
|
104
125
|
* Whether a message at `threshold` would be emitted: `false` for `'off'`,
|
|
@@ -136,6 +157,11 @@ export function parseLogLevel(value: unknown): LogThreshold | undefined {
|
|
|
136
157
|
export const DEFAULT_LOG_LEVEL_ENV = 'HYDRANIUM_LOG_LEVEL';
|
|
137
158
|
/** Env var the server reads its log file-tee target from. See {@link DEFAULT_LOG_LEVEL_ENV}. */
|
|
138
159
|
export const DEFAULT_LOG_FILE_ENV = 'HYDRANIUM_LOG_FILE';
|
|
160
|
+
/**
|
|
161
|
+
* Env var the server reads the file tee's own threshold from, which the LSP
|
|
162
|
+
* log-level setting does not change. See {@link Logger.setFileLevel}.
|
|
163
|
+
*/
|
|
164
|
+
export const DEFAULT_LOG_FILE_LEVEL_ENV = 'HYDRANIUM_LOG_FILE_LEVEL';
|
|
139
165
|
|
|
140
166
|
/**
|
|
141
167
|
* Human-readable formatting helpers used in log lines and diagnostic output.
|