@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 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
- * Whether a message at `level` would be emitted at the current threshold.
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
  */
@@ -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;AAMF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,MAAM;IACpB,oCAAoC;IACpC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,oCAAoC;IACpC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,6EAA6E;IAC7E,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,qFAAqF;IACrF,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,6EAA6E;IAC7E,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iFAAiF;IACjF,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oFAAoF;IACpF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED;;;;;;;;;GASG;AACH,yBAAiB,MAAM,CAAC;IACrB,qGAAqG;IACrG,SAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAElD;IACD,mDAAmD;IACnD,SAAgB,QAAQ,IAAI,YAAY,CAEvC;IACD;;;;OAIG;IACH,SAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEvD;IACD;;;;OAIG;IACH,SAAgB,kBAAkB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAEnE;CACH;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAGtE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAC3D,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAEzD;;GAEG;AACH,yBAAiB,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAgB,SAAS,CAAC,CAAC,GAAE,IAAiB,GAAG,MAAM,CAMtD;IAED,wEAAwE;IACxE,SAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE1C;IAED,6EAA6E;IAC7E,SAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAY3C;CACH"}
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;AAOF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,MAAM;IACpB,oCAAoC;IACpC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,oCAAoC;IACpC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,6EAA6E;IAC7E,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,qFAAqF;IACrF,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,6EAA6E;IAC7E,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iFAAiF;IACjF,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oFAAoF;IACpF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED;;;;;;;;;GASG;AACH,yBAAiB,MAAM,CAAC;IACrB,qGAAqG;IACrG,SAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAElD;IACD,mDAAmD;IACnD,SAAgB,QAAQ,IAAI,YAAY,CAEvC;IACD;;;;;;;;;OASG;IACH,SAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAElE;IACD,wFAAwF;IACxF,SAAgB,YAAY,IAAI,YAAY,GAAG,SAAS,CAEvD;IACD;;;;;;;OAOG;IACH,SAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEvD;IACD;;;;OAIG;IACH,SAAgB,kBAAkB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAEnE;CACH;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAGtE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAC3D,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,6BAA6B,CAAC;AAErE;;GAEG;AACH,yBAAiB,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAgB,SAAS,CAAC,CAAC,GAAE,IAAiB,GAAG,MAAM,CAMtD;IAED,wEAAwE;IACxE,SAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE1C;IAED,6EAA6E;IAC7E,SAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAY3C;CACH"}
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
- * Whether a message at `level` would be emitted at the current threshold.
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,CAyBtB;AAzBD,WAAiB,MAAM;IACpB,qGAAqG;IACrG,SAAgB,QAAQ,CAAC,KAAmB;QACzC,YAAY,GAAG,KAAK,CAAC;IACxB,CAAC;IAFe,OAAA,QAAQ,WAEvB,CAAA;IACD,mDAAmD;IACnD,SAAgB,QAAQ;QACrB,OAAO,YAAY,CAAC;IACvB,CAAC;IAFe,OAAA,QAAQ,WAEvB,CAAA;IACD;;;;OAIG;IACH,SAAgB,cAAc,CAAC,KAAe;QAC3C,OAAO,QAAA,WAAW,CAAC,KAAK,CAAC,IAAI,QAAA,WAAW,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAFe,OAAA,cAAc,iBAE7B,CAAA;IACD;;;;OAIG;IACH,SAAgB,kBAAkB,CAAC,SAAuB;QACvD,OAAO,SAAS,KAAK,KAAK,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAFe,OAAA,kBAAkB,qBAEjC,CAAA;AACJ,CAAC,EAzBgB,MAAM,aAAN,MAAM,GAAN,MAAM,QAyBtB;AAED,2FAA2F;AAC3F,wBAA+B,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,QAAA,WAAW,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,uBAA8B,KAAc;IACzC,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,OAAO,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D,gGAAgG;AACnF,QAAA,oBAAoB,GAAG,oBAAoB,CAAC;AAEzD;;GAEG;AACH,IAAiB,MAAM,CA6BtB;AA7BD,WAAiB,MAAM;IACpB,0DAA0D;IAC1D,SAAgB,SAAS,CAAC,CAAC,GAAS,IAAI,IAAI,EAAE;QAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxD,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IACpC,CAAC;IANe,OAAA,SAAS,YAMxB,CAAA;IAED,wEAAwE;IACxE,SAAgB,OAAO,CAAC,EAAU;QAC/B,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3E,CAAC;IAFe,OAAA,OAAO,UAEtB,CAAA;IAED,6EAA6E;IAC7E,SAAgB,KAAK,CAAC,KAAa;QAChC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;YAChB,OAAO,GAAG,KAAK,GAAG,CAAC;QACtB,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,IAAI,IAAI,CAAC;YACd,IAAI,EAAE,CAAC;QACV,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACnF,CAAC;IAZe,OAAA,KAAK,QAYpB,CAAA;AACJ,CAAC,EA7BgB,MAAM,aAAN,MAAM,GAAN,MAAM,QA6BtB"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydranium/protocol",
3
- "version": "1.0.0-next.189",
3
+ "version": "1.0.0-next.192",
4
4
  "description": "Generic, language-agnostic types, constants, and pure utilities for the hydranium framework.",
5
5
  "keywords": [
6
6
  "hydranium",
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
- * Whether a message at `level` would be emitted at the current threshold.
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.