logixia 2.0.10 → 2.1.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/README.md +2 -1
- package/dist/{async-context-Dv0bmPC-.js → async-context-Dgl3ZLyb.js} +4 -4
- package/dist/{async-context-Dv0bmPC-.js.map → async-context-Dgl3ZLyb.js.map} +1 -1
- package/dist/{async-context-COuvmwsS.mjs → async-context-fBqC5lNc.mjs} +3 -3
- package/dist/{async-context-COuvmwsS.mjs.map → async-context-fBqC5lNc.mjs.map} +1 -1
- package/dist/{azure-monitor.transport-CbSHOnNX.d.mts → azure-monitor.transport-C5VjvREZ.d.mts} +2 -2
- package/dist/{azure-monitor.transport-CbSHOnNX.d.mts.map → azure-monitor.transport-C5VjvREZ.d.mts.map} +1 -1
- package/dist/{azure-monitor.transport-Bvf7Xegt.d.ts → azure-monitor.transport-CyHDjHS-.d.ts} +2 -2
- package/dist/{azure-monitor.transport-Bvf7Xegt.d.ts.map → azure-monitor.transport-CyHDjHS-.d.ts.map} +1 -1
- package/dist/{azure-monitor.transport-Coz5Gesu.mjs → azure-monitor.transport-DGiacfvT.mjs} +19 -8
- package/dist/{azure-monitor.transport-Coz5Gesu.mjs.map → azure-monitor.transport-DGiacfvT.mjs.map} +1 -1
- package/dist/{azure-monitor.transport-D6ryi8rA.js → azure-monitor.transport-DX3fuK2t.js} +19 -8
- package/dist/{azure-monitor.transport-D6ryi8rA.js.map → azure-monitor.transport-DX3fuK2t.js.map} +1 -1
- package/dist/azure.d.mts +1 -1
- package/dist/azure.d.ts +1 -1
- package/dist/azure.js +1 -1
- package/dist/azure.mjs +1 -1
- package/dist/{batch-buffer-CFzKnuNZ.js → batch-buffer-BLmVvJAZ.js} +11 -7
- package/dist/{batch-buffer-CFzKnuNZ.js.map → batch-buffer-BLmVvJAZ.js.map} +1 -1
- package/dist/{batch-buffer-CQUWDMYq.mjs → batch-buffer-CM-lK_Qy.mjs} +11 -7
- package/dist/{batch-buffer-CQUWDMYq.mjs.map → batch-buffer-CM-lK_Qy.mjs.map} +1 -1
- package/dist/browser.d.mts +2 -0
- package/dist/browser.d.mts.map +1 -1
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +42 -13
- package/dist/browser.js.map +1 -1
- package/dist/browser.mjs +42 -13
- package/dist/browser.mjs.map +1 -1
- package/dist/{builder-Bj3mDeBw.mjs → builder-CA_dokb4.mjs} +246 -101
- package/dist/builder-CA_dokb4.mjs.map +1 -0
- package/dist/{builder-BLIStsCK.js → builder-jMlVYaQa.js} +256 -111
- package/dist/builder-jMlVYaQa.js.map +1 -0
- package/dist/cli/index.js +21 -16
- package/dist/cloudwatch.d.mts +1 -1
- package/dist/cloudwatch.d.ts +1 -1
- package/dist/cloudwatch.js +1 -1
- package/dist/cloudwatch.mjs +1 -1
- package/dist/{cloudwatch.transport-Cr1aeTGj.mjs → cloudwatch.transport-Cr0fEpko.mjs} +24 -9
- package/dist/{cloudwatch.transport-Cr1aeTGj.mjs.map → cloudwatch.transport-Cr0fEpko.mjs.map} +1 -1
- package/dist/{cloudwatch.transport-CQyT6U91.d.ts → cloudwatch.transport-DdSjUWvu.d.ts} +2 -2
- package/dist/{cloudwatch.transport-CQyT6U91.d.ts.map → cloudwatch.transport-DdSjUWvu.d.ts.map} +1 -1
- package/dist/{cloudwatch.transport-D4G5xYfG.js → cloudwatch.transport-Lst1Bbmr.js} +24 -9
- package/dist/{cloudwatch.transport-D4G5xYfG.js.map → cloudwatch.transport-Lst1Bbmr.js.map} +1 -1
- package/dist/{cloudwatch.transport-CjVrI6S4.d.mts → cloudwatch.transport-_hS7Mcc5.d.mts} +2 -2
- package/dist/{cloudwatch.transport-CjVrI6S4.d.mts.map → cloudwatch.transport-_hS7Mcc5.d.mts.map} +1 -1
- package/dist/correlation.js +3 -3
- package/dist/correlation.mjs +3 -3
- package/dist/{coerce.utils-C1C5sIX0.js → csv.utils-CbVHY1pd.js} +24 -1
- package/dist/csv.utils-CbVHY1pd.js.map +1 -0
- package/dist/{coerce.utils-B_rEudCn.mjs → csv.utils-ZdxSod5g.mjs} +19 -2
- package/dist/csv.utils-ZdxSod5g.mjs.map +1 -0
- package/dist/{entry-fields-CVwoQplO.js → entry-fields-BSLkzw18.js} +3 -3
- package/dist/{entry-fields-CVwoQplO.js.map → entry-fields-BSLkzw18.js.map} +1 -1
- package/dist/{entry-fields-DNTKQxoU.mjs → entry-fields-J1OBi24o.mjs} +2 -2
- package/dist/{entry-fields-DNTKQxoU.mjs.map → entry-fields-J1OBi24o.mjs.map} +1 -1
- package/dist/gcp.d.mts +1 -1
- package/dist/gcp.d.ts +1 -1
- package/dist/gcp.js +1 -1
- package/dist/gcp.mjs +1 -1
- package/dist/{gcp.transport-CVuRpchl.js → gcp.transport-5-ZIjN8r.js} +18 -9
- package/dist/{gcp.transport-CVuRpchl.js.map → gcp.transport-5-ZIjN8r.js.map} +1 -1
- package/dist/{gcp.transport-D9SdLPwP.d.mts → gcp.transport-C8VJiEM7.d.mts} +2 -2
- package/dist/{gcp.transport-D9SdLPwP.d.mts.map → gcp.transport-C8VJiEM7.d.mts.map} +1 -1
- package/dist/{gcp.transport-BCIvdFV-.d.ts → gcp.transport-Ct0BtKFo.d.ts} +2 -2
- package/dist/{gcp.transport-BCIvdFV-.d.ts.map → gcp.transport-Ct0BtKFo.d.ts.map} +1 -1
- package/dist/{gcp.transport-LLK2bw2-.mjs → gcp.transport-Cw3Qke85.mjs} +18 -9
- package/dist/{gcp.transport-LLK2bw2-.mjs.map → gcp.transport-Cw3Qke85.mjs.map} +1 -1
- package/dist/{index-BAkPHp5D.d.mts → index-B3ajtXJd.d.mts} +2 -2
- package/dist/{index-BAkPHp5D.d.mts.map → index-B3ajtXJd.d.mts.map} +1 -1
- package/dist/{index-e7LowmAu.d.ts → index-oqD3WNxf.d.ts} +2 -2
- package/dist/{index-e7LowmAu.d.ts.map → index-oqD3WNxf.d.ts.map} +1 -1
- package/dist/index.d.mts +8 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -17
- package/dist/index.mjs.map +1 -1
- package/dist/{logitron-logger-DVUdgmBY.d.ts → logitron-logger-Csn3e6Qu.d.ts} +2 -2
- package/dist/{logitron-logger-DVUdgmBY.d.ts.map → logitron-logger-Csn3e6Qu.d.ts.map} +1 -1
- package/dist/{logitron-logger-DoWmMjYB.d.mts → logitron-logger-fMOkXr8H.d.mts} +2 -2
- package/dist/{logitron-logger-DoWmMjYB.d.mts.map → logitron-logger-fMOkXr8H.d.mts.map} +1 -1
- package/dist/middleware.d.mts +1 -1
- package/dist/middleware.d.mts.map +1 -1
- package/dist/middleware.d.ts +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +12 -7
- package/dist/middleware.js.map +1 -1
- package/dist/middleware.mjs +11 -6
- package/dist/middleware.mjs.map +1 -1
- package/dist/nest.d.mts +51 -18
- package/dist/nest.d.mts.map +1 -1
- package/dist/nest.d.ts +51 -18
- package/dist/nest.d.ts.map +1 -1
- package/dist/nest.js +207 -65
- package/dist/nest.js.map +1 -1
- package/dist/nest.mjs +202 -60
- package/dist/nest.mjs.map +1 -1
- package/dist/{otel-ChnVYRLA.js → otel-8ypFGG19.js} +452 -120
- package/dist/otel-8ypFGG19.js.map +1 -0
- package/dist/{otel-DOuwGPCd.mjs → otel-b-s2QbY4.mjs} +450 -118
- package/dist/otel-b-s2QbY4.mjs.map +1 -0
- package/dist/own-property-BWkibepN.js +40 -0
- package/dist/own-property-BWkibepN.js.map +1 -0
- package/dist/own-property-CjFw9qwZ.mjs +29 -0
- package/dist/own-property-CjFw9qwZ.mjs.map +1 -0
- package/dist/{request-trace-ByujsUZk.js → request-trace-C7kXMjx5.js} +5 -6
- package/dist/{request-trace-ByujsUZk.js.map → request-trace-C7kXMjx5.js.map} +1 -1
- package/dist/{request-trace-BgNykH9M.mjs → request-trace-Dekcnenb.mjs} +5 -6
- package/dist/{request-trace-BgNykH9M.mjs.map → request-trace-Dekcnenb.mjs.map} +1 -1
- package/dist/{safe-stringify--7gbe95n.mjs → safe-stringify-B5p5ktFe.mjs} +2 -2
- package/dist/{safe-stringify--7gbe95n.mjs.map → safe-stringify-B5p5ktFe.mjs.map} +1 -1
- package/dist/{safe-stringify-CN7icp8S.js → safe-stringify-J3sh-7YM.js} +5 -5
- package/dist/{safe-stringify-CN7icp8S.js.map → safe-stringify-J3sh-7YM.js.map} +1 -1
- package/dist/{search-DPwTKPve.d.ts → search-B-hJe2N-.d.mts} +9 -8
- package/dist/{search-D-8HJADE.d.mts.map → search-B-hJe2N-.d.mts.map} +1 -1
- package/dist/{search-D-8HJADE.d.mts → search-BlKBLm5D.d.ts} +9 -8
- package/dist/{search-DPwTKPve.d.ts.map → search-BlKBLm5D.d.ts.map} +1 -1
- package/dist/{search-DAXKE-P9.mjs → search-CTR4XNHq.mjs} +91 -44
- package/dist/search-CTR4XNHq.mjs.map +1 -0
- package/dist/{search-CRjhHxe9.js → search-_qx4YzRP.js} +94 -47
- package/dist/search-_qx4YzRP.js.map +1 -0
- package/dist/search.d.mts +1 -1
- package/dist/search.d.ts +1 -1
- package/dist/search.js +1 -1
- package/dist/search.mjs +1 -1
- package/dist/{secret-config-BvFl2dC8.js → secret-config--cVTOWwp.js} +6 -5
- package/dist/{secret-config-BvFl2dC8.js.map → secret-config--cVTOWwp.js.map} +1 -1
- package/dist/{secret-config-ByGq7kJd.mjs → secret-config-GKmb15Me.mjs} +3 -2
- package/dist/{secret-config-ByGq7kJd.mjs.map → secret-config-GKmb15Me.mjs.map} +1 -1
- package/dist/{sensitive-names-o__1PUUR.mjs → sensitive-names-BiBM6R1X.mjs} +2 -28
- package/dist/sensitive-names-BiBM6R1X.mjs.map +1 -0
- package/dist/{sensitive-names-CHMowujD.js → sensitive-names-NiKIRhp5.js} +5 -37
- package/dist/sensitive-names-NiKIRhp5.js.map +1 -0
- package/dist/{slack.transport-BDyENuR0.d.mts → slack.transport-5OPL7H3u.d.mts} +76 -3
- package/dist/slack.transport-5OPL7H3u.d.mts.map +1 -0
- package/dist/{slack.transport-C6E0l4kw.d.ts → slack.transport-BFpBD_Ri.d.ts} +76 -3
- package/dist/slack.transport-BFpBD_Ri.d.ts.map +1 -0
- package/dist/{slack.transport-zLQ9MGxS.js → slack.transport-Cpx5fKga.js} +272 -21
- package/dist/slack.transport-Cpx5fKga.js.map +1 -0
- package/dist/{slack.transport-CSj1j0_X.mjs → slack.transport-Qwj9WkrJ.mjs} +267 -22
- package/dist/slack.transport-Qwj9WkrJ.mjs.map +1 -0
- package/dist/testing.d.mts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/{transport.types-CzJq4IrF.d.ts → transport.types-B1ejJJP6.d.mts} +6 -1
- package/dist/transport.types-B1ejJJP6.d.mts.map +1 -0
- package/dist/{transport.types-CzJq4IrF.d.mts → transport.types-B1ejJJP6.d.ts} +6 -1
- package/dist/transport.types-B1ejJJP6.d.ts.map +1 -0
- package/dist/transports.d.mts +61 -11
- package/dist/transports.d.mts.map +1 -1
- package/dist/transports.d.ts +61 -11
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +7 -6
- package/dist/transports.mjs +7 -7
- package/dist/worker-entry.js +200 -52
- package/dist/worker.d.mts +1 -1
- package/dist/worker.d.ts +1 -1
- package/dist/worker.js +1 -1
- package/dist/worker.mjs +1 -1
- package/dist/{worker.transport-B9mCQSM1.d.ts → worker.transport-B7olL1Uh.d.ts} +12 -2
- package/dist/worker.transport-B7olL1Uh.d.ts.map +1 -0
- package/dist/{worker.transport-D78xhNhB.mjs → worker.transport-BHnWDXPH.mjs} +59 -13
- package/dist/worker.transport-BHnWDXPH.mjs.map +1 -0
- package/dist/{worker.transport-DQDv1nAJ.js → worker.transport-C7jNGhev.js} +59 -13
- package/dist/worker.transport-C7jNGhev.js.map +1 -0
- package/dist/{worker.transport-Bl8lFRck.d.mts → worker.transport-DnU0_9Bd.d.mts} +12 -2
- package/dist/worker.transport-DnU0_9Bd.d.mts.map +1 -0
- package/package.json +10 -3
- package/dist/builder-BLIStsCK.js.map +0 -1
- package/dist/builder-Bj3mDeBw.mjs.map +0 -1
- package/dist/coerce.utils-B_rEudCn.mjs.map +0 -1
- package/dist/coerce.utils-C1C5sIX0.js.map +0 -1
- package/dist/otel-ChnVYRLA.js.map +0 -1
- package/dist/otel-DOuwGPCd.mjs.map +0 -1
- package/dist/search-CRjhHxe9.js.map +0 -1
- package/dist/search-DAXKE-P9.mjs.map +0 -1
- package/dist/sensitive-names-CHMowujD.js.map +0 -1
- package/dist/sensitive-names-o__1PUUR.mjs.map +0 -1
- package/dist/slack.transport-BDyENuR0.d.mts.map +0 -1
- package/dist/slack.transport-C6E0l4kw.d.ts.map +0 -1
- package/dist/slack.transport-CSj1j0_X.mjs.map +0 -1
- package/dist/slack.transport-zLQ9MGxS.js.map +0 -1
- package/dist/transport.types-CzJq4IrF.d.mts.map +0 -1
- package/dist/transport.types-CzJq4IrF.d.ts.map +0 -1
- package/dist/worker.transport-B9mCQSM1.d.ts.map +0 -1
- package/dist/worker.transport-Bl8lFRck.d.mts.map +0 -1
- package/dist/worker.transport-D78xhNhB.mjs.map +0 -1
- package/dist/worker.transport-DQDv1nAJ.js.map +0 -1
package/dist/nest.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { S as DEFAULT_CONFIG, T as LogLevel, _ as serializeError, a as isLogixiaException, o as LogixiaLogger, t as ErrorResponseBuilder } from "./builder-
|
|
2
|
-
import {
|
|
3
|
-
import { d as getTraceContextKey, l as extractTraceId, o as TraceContext, p as sanitizeIncomingId, r as DEFAULT_TRACE_HEADERS } from "./request-trace-
|
|
4
|
-
import { n as
|
|
1
|
+
import { S as DEFAULT_CONFIG, T as LogLevel, _ as serializeError, a as isLogixiaException, o as LogixiaLogger, t as ErrorResponseBuilder } from "./builder-CA_dokb4.mjs";
|
|
2
|
+
import { t as assignOwn } from "./own-property-CjFw9qwZ.mjs";
|
|
3
|
+
import { d as getTraceContextKey, l as extractTraceId, o as TraceContext, p as sanitizeIncomingId, r as DEFAULT_TRACE_HEADERS } from "./request-trace-Dekcnenb.mjs";
|
|
4
|
+
import { a as buildNameSet, c as sanitizeText, l as sensitiveQueryValues, n as DEFAULT_REDACT_QUERY_PARAMS, o as redactUrlQuery } from "./sensitive-names-BiBM6R1X.mjs";
|
|
5
|
+
import { n as protectSecrets } from "./secret-config-GKmb15Me.mjs";
|
|
5
6
|
import { r as internalWarn, t as internalError } from "./internal-log-Cy5nF1ZL.mjs";
|
|
6
|
-
import {
|
|
7
|
+
import { n as safeToString } from "./csv.utils-ZdxSod5g.mjs";
|
|
7
8
|
import { Catch, Inject, Injectable, Module, Optional, RequestMethod, Scope } from "@nestjs/common";
|
|
8
9
|
import { EMPTY, Observable } from "rxjs";
|
|
9
10
|
// \0@oxc-project+runtime@0.155.0/helpers/esm/decorateMetadata.js
|
|
@@ -19,9 +20,37 @@ function __decorate(decorators, target, key, desc) {
|
|
|
19
20
|
}
|
|
20
21
|
// src/core/logitron-nestjs.service.ts
|
|
21
22
|
var _LogixiaLoggerService;
|
|
23
|
+
const looksLikeStack = (value) => value.includes("\n at ");
|
|
24
|
+
const NEST_LEVEL_TO_LOGIXIA = {
|
|
25
|
+
fatal: LogLevel.ERROR,
|
|
26
|
+
error: LogLevel.ERROR,
|
|
27
|
+
warn: LogLevel.WARN,
|
|
28
|
+
log: LogLevel.INFO,
|
|
29
|
+
debug: LogLevel.DEBUG,
|
|
30
|
+
verbose: LogLevel.TRACE
|
|
31
|
+
};
|
|
32
|
+
const LEVEL_VERBOSITY = [
|
|
33
|
+
LogLevel.ERROR,
|
|
34
|
+
LogLevel.WARN,
|
|
35
|
+
LogLevel.INFO,
|
|
36
|
+
LogLevel.DEBUG,
|
|
37
|
+
LogLevel.TRACE
|
|
38
|
+
];
|
|
39
|
+
function isPlainObject(value) {
|
|
40
|
+
if (typeof value !== "object" || value === null) return false;
|
|
41
|
+
const proto = Object.getPrototypeOf(value);
|
|
42
|
+
return proto === Object.prototype || proto === null;
|
|
43
|
+
}
|
|
44
|
+
function describeObject(value) {
|
|
45
|
+
var _value$constructor;
|
|
46
|
+
return Array.isArray(value) ? safeToString(value) : `[${((_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name) ?? "Object"}]`;
|
|
47
|
+
}
|
|
22
48
|
let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
|
|
49
|
+
logger;
|
|
50
|
+
context;
|
|
51
|
+
_mergedConfig;
|
|
23
52
|
constructor(config) {
|
|
24
|
-
const
|
|
53
|
+
const mergedConfig = {
|
|
25
54
|
appName: "NestJS-App",
|
|
26
55
|
environment: "development",
|
|
27
56
|
traceId: true,
|
|
@@ -56,37 +85,40 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
|
|
|
56
85
|
message: "[message]",
|
|
57
86
|
payload: "[payload]",
|
|
58
87
|
timeTaken: "[time_taken_MS]"
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
protectSecrets(this, ["_mergedConfig"]);
|
|
62
|
-
this._mergedConfig = {
|
|
63
|
-
...defaultConfig,
|
|
88
|
+
},
|
|
64
89
|
...config
|
|
65
90
|
};
|
|
66
|
-
this.
|
|
91
|
+
this._attach(mergedConfig, new LogixiaLogger(mergedConfig));
|
|
92
|
+
}
|
|
93
|
+
_attach(mergedConfig, logger) {
|
|
94
|
+
protectSecrets(this, ["_mergedConfig"]);
|
|
95
|
+
this._mergedConfig = mergedConfig;
|
|
96
|
+
this.logger = logger;
|
|
67
97
|
this._createCustomLevelMethods();
|
|
68
98
|
}
|
|
69
99
|
_createCustomLevelMethods() {
|
|
70
100
|
var _this$_mergedConfig$l;
|
|
71
101
|
const levels = (_this$_mergedConfig$l = this._mergedConfig.levelOptions) === null || _this$_mergedConfig$l === void 0 ? void 0 : _this$_mergedConfig$l.levels;
|
|
72
102
|
if (!levels) return;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (typeof
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
103
|
+
const self = this;
|
|
104
|
+
const define = (method, levelName) => {
|
|
105
|
+
if (typeof self[method] !== "undefined") return;
|
|
106
|
+
self[method] = async (message, data) => this.logger.logLevel(levelName, message, data);
|
|
107
|
+
};
|
|
108
|
+
const names = Object.keys(levels);
|
|
109
|
+
for (const levelName of names) define(levelName, levelName);
|
|
110
|
+
for (const levelName of names) define(levelName.toLowerCase(), levelName);
|
|
80
111
|
}
|
|
81
112
|
/**
|
|
82
|
-
* NestJS `LoggerService.log` — void
|
|
83
|
-
*
|
|
113
|
+
* NestJS `LoggerService.log` — void. Maps internally to `info`.
|
|
114
|
+
* A trailing string is the context for this call only; object params are merged into the payload.
|
|
84
115
|
*
|
|
85
116
|
* @example `logger.log('User signed up', 'AuthService')`
|
|
117
|
+
* @example `logger.log('User signed up', { userId: 'u_abc' }, 'AuthService')`
|
|
86
118
|
*/
|
|
87
|
-
log(message,
|
|
88
|
-
this.
|
|
89
|
-
this.
|
|
119
|
+
log(message, ...optionalParams) {
|
|
120
|
+
const { context, data } = this.parseParams(optionalParams);
|
|
121
|
+
this.reportFailure("log", this.withContext(context, () => this.logger.info(this.formatMessage(message), data)));
|
|
90
122
|
}
|
|
91
123
|
/**
|
|
92
124
|
* Native async `info` — structured data, returns `Promise<void>`.
|
|
@@ -96,27 +128,49 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
|
|
|
96
128
|
async info(message, data) {
|
|
97
129
|
return this.logger.info(message, data);
|
|
98
130
|
}
|
|
99
|
-
error(message,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
131
|
+
error(message, ...optionalParams) {
|
|
132
|
+
const only = optionalParams[0];
|
|
133
|
+
if (optionalParams.length === 1 && typeof only === "object" && only !== null) {
|
|
134
|
+
const data = only;
|
|
135
|
+
return message instanceof Error ? this.logger.error(message, data) : this.logger.error(this.formatMessage(message), data);
|
|
136
|
+
}
|
|
137
|
+
const { context, data } = this.parseParams(optionalParams, true);
|
|
138
|
+
this.reportFailure("error", this.withContext(context, () => message instanceof Error ? this.logger.error(message, data) : this.logger.error(this.formatMessage(message), data)));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* NestJS `LoggerService.fatal`. logixia has no level above `error`, so this logs
|
|
142
|
+
* at `error` with `fatal: true` in the payload, or at a custom `fatal` level when
|
|
143
|
+
* one is configured.
|
|
144
|
+
*
|
|
145
|
+
* @example `logger.fatal('Cannot reach the database, shutting down', 'Bootstrap')`
|
|
146
|
+
*/
|
|
147
|
+
fatal(message, ...optionalParams) {
|
|
148
|
+
var _this$_mergedConfig$l2;
|
|
149
|
+
const { context, data } = this.parseParams(optionalParams, true);
|
|
150
|
+
const text = this.formatMessage(message);
|
|
151
|
+
const hasFatalLevel = ((_this$_mergedConfig$l2 = this._mergedConfig.levelOptions) === null || _this$_mergedConfig$l2 === void 0 || (_this$_mergedConfig$l2 = _this$_mergedConfig$l2.levels) === null || _this$_mergedConfig$l2 === void 0 ? void 0 : _this$_mergedConfig$l2["fatal"]) !== void 0;
|
|
152
|
+
this.reportFailure("fatal", this.withContext(context, () => hasFatalLevel ? this.logger.logLevel("fatal", text, data) : this.logger.error(text, {
|
|
153
|
+
...data,
|
|
154
|
+
fatal: true
|
|
155
|
+
})));
|
|
105
156
|
}
|
|
106
|
-
warn(message,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
157
|
+
warn(message, ...optionalParams) {
|
|
158
|
+
const only = optionalParams[0];
|
|
159
|
+
if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.warn(this.formatMessage(message), only);
|
|
160
|
+
const { context, data } = this.parseParams(optionalParams);
|
|
161
|
+
this.reportFailure("warn", this.withContext(context, () => this.logger.warn(this.formatMessage(message), data)));
|
|
110
162
|
}
|
|
111
|
-
debug(message,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
163
|
+
debug(message, ...optionalParams) {
|
|
164
|
+
const only = optionalParams[0];
|
|
165
|
+
if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.debug(this.formatMessage(message), only);
|
|
166
|
+
const { context, data } = this.parseParams(optionalParams);
|
|
167
|
+
this.reportFailure("debug", this.withContext(context, () => this.logger.debug(this.formatMessage(message), data)));
|
|
115
168
|
}
|
|
116
|
-
verbose(message,
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
169
|
+
verbose(message, ...optionalParams) {
|
|
170
|
+
const only = optionalParams[0];
|
|
171
|
+
if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.trace(this.formatMessage(message), only);
|
|
172
|
+
const { context, data } = this.parseParams(optionalParams);
|
|
173
|
+
this.reportFailure("verbose", this.withContext(context, () => this.logger.trace(this.formatMessage(message), data)));
|
|
120
174
|
}
|
|
121
175
|
/**
|
|
122
176
|
* Native async `trace` — lowest verbosity level, structured data.
|
|
@@ -153,9 +207,30 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
|
|
|
153
207
|
getLevel() {
|
|
154
208
|
return this.logger.getLevel();
|
|
155
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* NestJS `LoggerService.setLogLevels`. logixia filters by a minimum level, not a
|
|
212
|
+
* set, so the most verbose of `levels` becomes the threshold and everything more
|
|
213
|
+
* severe stays on (`['log', 'error']` also enables `warn`). Unknown names are
|
|
214
|
+
* ignored, and an empty list is ignored too: use `silent` to turn logging off.
|
|
215
|
+
*
|
|
216
|
+
* @example `logger.setLogLevels(['error', 'warn'])`
|
|
217
|
+
*/
|
|
218
|
+
setLogLevels(levels) {
|
|
219
|
+
let threshold;
|
|
220
|
+
let verbosity = -1;
|
|
221
|
+
for (const name of levels) {
|
|
222
|
+
const level = NEST_LEVEL_TO_LOGIXIA[name];
|
|
223
|
+
const rank = level === void 0 ? -1 : LEVEL_VERBOSITY.indexOf(level);
|
|
224
|
+
if (rank > verbosity) {
|
|
225
|
+
verbosity = rank;
|
|
226
|
+
threshold = level;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (threshold !== void 0) this.setLevel(threshold);
|
|
230
|
+
}
|
|
156
231
|
child(context, data) {
|
|
157
|
-
const childService =
|
|
158
|
-
childService.
|
|
232
|
+
const childService = Object.create(_LogixiaLoggerService.prototype);
|
|
233
|
+
childService._attach(this._mergedConfig, this.logger.child(context, data));
|
|
159
234
|
childService.context = context;
|
|
160
235
|
return childService;
|
|
161
236
|
}
|
|
@@ -175,12 +250,62 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
|
|
|
175
250
|
getLogger() {
|
|
176
251
|
return this.logger;
|
|
177
252
|
}
|
|
178
|
-
|
|
179
|
-
if (
|
|
180
|
-
|
|
253
|
+
withContext(context, fn) {
|
|
254
|
+
if (context === void 0 || context === this.logger.getContext()) return fn();
|
|
255
|
+
const previous = this.logger.getContext() ?? "";
|
|
256
|
+
this.logger.setContext(context);
|
|
257
|
+
try {
|
|
258
|
+
return fn();
|
|
259
|
+
} finally {
|
|
260
|
+
this.logger.setContext(previous);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Split NestJS `...optionalParams` into a per-call context and a payload.
|
|
265
|
+
* A trailing string is the context; plain objects are merged into the payload and
|
|
266
|
+
* an Error goes under `error`. For `error()` (`withStack`), a leading string is the stack
|
|
267
|
+
* trace, and a lone string is the stack only if it looks like one, since Nest's own
|
|
268
|
+
* `Logger` appends the context as the last param. Anything else is listed under `params`.
|
|
269
|
+
*/
|
|
270
|
+
parseParams(params, withStack = false) {
|
|
271
|
+
if (params.length === 0) return {};
|
|
272
|
+
let rest = params;
|
|
273
|
+
let context;
|
|
274
|
+
const last = params[params.length - 1];
|
|
275
|
+
if (typeof last === "string" && !(withStack && params.length === 1 && looksLikeStack(last))) {
|
|
276
|
+
context = last.length > 0 ? last : void 0;
|
|
277
|
+
rest = params.slice(0, -1);
|
|
278
|
+
}
|
|
279
|
+
let data;
|
|
280
|
+
const extras = [];
|
|
281
|
+
for (const param of rest) if (withStack && typeof param === "string" && (data === null || data === void 0 ? void 0 : data["stack"]) === void 0) data = {
|
|
282
|
+
...data,
|
|
283
|
+
stack: param
|
|
284
|
+
};
|
|
285
|
+
else if (param instanceof Error) data = {
|
|
286
|
+
...data,
|
|
287
|
+
error: param
|
|
288
|
+
};
|
|
289
|
+
else if (isPlainObject(param)) data = {
|
|
290
|
+
...data,
|
|
291
|
+
...param
|
|
292
|
+
};
|
|
293
|
+
else if (param !== void 0) extras.push(typeof param === "object" && param !== null ? describeObject(param) : param);
|
|
294
|
+
if (extras.length > 0) data = {
|
|
295
|
+
...data,
|
|
296
|
+
params: extras
|
|
297
|
+
};
|
|
298
|
+
return context === void 0 ? { data } : {
|
|
299
|
+
context,
|
|
300
|
+
data
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
reportFailure(method, result) {
|
|
304
|
+
result.catch((err) => internalError(`LogixiaLoggerService.${method} failed`, err));
|
|
181
305
|
}
|
|
182
306
|
formatMessage(message) {
|
|
183
307
|
if (typeof message === "string") return message;
|
|
308
|
+
if (message !== null && typeof message === "object") return message;
|
|
184
309
|
return safeToString(message);
|
|
185
310
|
}
|
|
186
311
|
};
|
|
@@ -191,12 +316,24 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
|
|
|
191
316
|
static {
|
|
192
317
|
_KafkaTraceInterceptor = this;
|
|
193
318
|
}
|
|
319
|
+
requireTraceId;
|
|
320
|
+
/**
|
|
321
|
+
* Process-wide counters. Readable from anywhere — scrape into your metrics
|
|
322
|
+
* system (Prometheus, Datadog, CloudWatch) on an interval.
|
|
323
|
+
*/
|
|
324
|
+
static metrics = {
|
|
325
|
+
accepted: 0,
|
|
326
|
+
acceptedWithoutTrace: 0,
|
|
327
|
+
dropped: 0
|
|
328
|
+
};
|
|
194
329
|
/** Reset counters (tests). */
|
|
195
330
|
static resetMetrics() {
|
|
196
331
|
_KafkaTraceInterceptor.metrics.accepted = 0;
|
|
197
332
|
_KafkaTraceInterceptor.metrics.acceptedWithoutTrace = 0;
|
|
198
333
|
_KafkaTraceInterceptor.metrics.dropped = 0;
|
|
199
334
|
}
|
|
335
|
+
ctx = TraceContext.instance;
|
|
336
|
+
config;
|
|
200
337
|
/**
|
|
201
338
|
* @param config - TraceIdConfig options (extractor keys, contextKey, etc.)
|
|
202
339
|
* @param requireTraceId - When true, messages with no traceId are silently skipped
|
|
@@ -207,7 +344,6 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
|
|
|
207
344
|
*/
|
|
208
345
|
constructor(config, requireTraceId = false) {
|
|
209
346
|
this.requireTraceId = requireTraceId;
|
|
210
|
-
this.ctx = TraceContext.instance;
|
|
211
347
|
this.config = {
|
|
212
348
|
enabled: true,
|
|
213
349
|
contextKey: "traceId",
|
|
@@ -266,11 +402,6 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
|
|
|
266
402
|
return () => inner === null || inner === void 0 ? void 0 : inner.unsubscribe();
|
|
267
403
|
});
|
|
268
404
|
}
|
|
269
|
-
static #_ = () => this.metrics = {
|
|
270
|
-
accepted: 0,
|
|
271
|
-
acceptedWithoutTrace: 0,
|
|
272
|
-
dropped: 0
|
|
273
|
-
};
|
|
274
405
|
};
|
|
275
406
|
KafkaTraceInterceptor = _KafkaTraceInterceptor = __decorate([Injectable(), __decorateMetadata("design:paramtypes", [Object, Boolean])], KafkaTraceInterceptor);
|
|
276
407
|
// \0@oxc-project+runtime@0.155.0/helpers/esm/decorateParam.js
|
|
@@ -311,9 +442,11 @@ function traceUrl(req, names) {
|
|
|
311
442
|
return raw === void 0 ? void 0 : redactUrlQuery(raw, names);
|
|
312
443
|
}
|
|
313
444
|
let TraceMiddleware = class TraceMiddleware {
|
|
445
|
+
config;
|
|
446
|
+
ctx = TraceContext.instance;
|
|
447
|
+
redactParams;
|
|
314
448
|
constructor(config, redactQueryParams) {
|
|
315
449
|
this.config = config;
|
|
316
|
-
this.ctx = TraceContext.instance;
|
|
317
450
|
this.redactParams = buildNameSet(DEFAULT_REDACT_QUERY_PARAMS, redactQueryParams);
|
|
318
451
|
const defaultExtractor = {
|
|
319
452
|
header: DEFAULT_TRACE_HEADERS,
|
|
@@ -362,8 +495,9 @@ TraceMiddleware = __decorate([
|
|
|
362
495
|
], TraceMiddleware);
|
|
363
496
|
// src/core/websocket-trace.interceptor.ts
|
|
364
497
|
let WebSocketTraceInterceptor = class WebSocketTraceInterceptor {
|
|
498
|
+
ctx = TraceContext.instance;
|
|
499
|
+
config;
|
|
365
500
|
constructor(config) {
|
|
366
|
-
this.ctx = TraceContext.instance;
|
|
367
501
|
this.config = {
|
|
368
502
|
enabled: true,
|
|
369
503
|
contextKey: "traceId",
|
|
@@ -432,9 +566,14 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
|
|
|
432
566
|
static {
|
|
433
567
|
_LogixiaLoggerModule = this;
|
|
434
568
|
}
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
569
|
+
config = {};
|
|
570
|
+
static loggerConfig = {};
|
|
571
|
+
/**
|
|
572
|
+
* @internal Backing field for the global logger. Do not read or write
|
|
573
|
+
* directly — use {@link getGlobalLogger} / {@link _setGlobalLogger} which
|
|
574
|
+
* enforce single-init semantics.
|
|
575
|
+
*/
|
|
576
|
+
static _globalLogger = null;
|
|
438
577
|
/**
|
|
439
578
|
* @internal Set the global logger exactly once.
|
|
440
579
|
*
|
|
@@ -674,7 +813,6 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
|
|
|
674
813
|
inject: [options.useExisting || options.useClass]
|
|
675
814
|
};
|
|
676
815
|
}
|
|
677
|
-
static #_ = () => (this.loggerConfig = {}, this._globalLogger = null);
|
|
678
816
|
};
|
|
679
817
|
LogixiaLoggerModule = _LogixiaLoggerModule = __decorate([Module({})], LogixiaLoggerModule);
|
|
680
818
|
// src/core/nestjs-extras.ts
|
|
@@ -711,7 +849,7 @@ const InjectLogger = (context) => context === void 0 ? Inject(LogixiaLoggerServi
|
|
|
711
849
|
* ```
|
|
712
850
|
*/
|
|
713
851
|
function LogMethod(options = {}) {
|
|
714
|
-
const { level = "debug", logArgs =
|
|
852
|
+
const { level = "debug", logArgs = false, logResult = false, logErrors = true } = options;
|
|
715
853
|
return function(target, propertyKey, descriptor) {
|
|
716
854
|
var _constructor;
|
|
717
855
|
const originalMethod = descriptor.value;
|
|
@@ -852,6 +990,10 @@ function sanitizedError(exception, clean) {
|
|
|
852
990
|
}
|
|
853
991
|
}
|
|
854
992
|
let LogixiaExceptionFilter = class LogixiaExceptionFilter {
|
|
993
|
+
_logger;
|
|
994
|
+
_traceConfig;
|
|
995
|
+
_options;
|
|
996
|
+
_redactParams;
|
|
855
997
|
constructor(logger, loggerConfig, options) {
|
|
856
998
|
var _loggerConfig$redact;
|
|
857
999
|
this._options = options ?? {};
|