logixia 1.12.4 → 1.12.6
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 +80 -27
- package/dist/.tsbuildinfo +1 -1
- package/dist/async-context-CSHWoHMB.js +88 -0
- package/dist/async-context-CSHWoHMB.js.map +1 -0
- package/dist/async-context-CwBNMm2E.mjs +68 -0
- package/dist/async-context-CwBNMm2E.mjs.map +1 -0
- package/dist/azure-monitor.transport-CG7ClkYj.d.ts +62 -0
- package/dist/azure-monitor.transport-CG7ClkYj.d.ts.map +1 -0
- package/dist/azure-monitor.transport-CHnjVRF-.mjs +152 -0
- package/dist/azure-monitor.transport-CHnjVRF-.mjs.map +1 -0
- package/dist/azure-monitor.transport-Cm74kXZS.d.mts +62 -0
- package/dist/azure-monitor.transport-Cm74kXZS.d.mts.map +1 -0
- package/dist/azure-monitor.transport-CrvfHd9C.js +157 -0
- package/dist/azure-monitor.transport-CrvfHd9C.js.map +1 -0
- package/dist/azure.d.mts +3 -0
- package/dist/azure.d.ts +3 -0
- package/dist/azure.js +6 -0
- package/dist/azure.mjs +6 -0
- package/dist/batch-buffer-BY-mRWIK.js +170 -0
- package/dist/batch-buffer-BY-mRWIK.js.map +1 -0
- package/dist/batch-buffer-PGvSgbmd.mjs +132 -0
- package/dist/batch-buffer-PGvSgbmd.mjs.map +1 -0
- package/dist/browser.d.mts +427 -0
- package/dist/browser.d.mts.map +1 -0
- package/dist/browser.d.ts +427 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +590 -0
- package/dist/browser.js.map +1 -0
- package/dist/browser.mjs +586 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/chunk-DLSkYcPk.mjs +7 -0
- package/dist/chunk-nOFOJqeH.js +30 -0
- package/dist/cloudwatch.d.mts +3 -0
- package/dist/cloudwatch.d.ts +3 -0
- package/dist/cloudwatch.js +6 -0
- package/dist/cloudwatch.mjs +6 -0
- package/dist/cloudwatch.transport-CGHY4buE.d.mts +81 -0
- package/dist/cloudwatch.transport-CGHY4buE.d.mts.map +1 -0
- package/dist/cloudwatch.transport-DK_8cKd3.d.ts +81 -0
- package/dist/cloudwatch.transport-DK_8cKd3.d.ts.map +1 -0
- package/dist/cloudwatch.transport-pNBNWJLt.js +370 -0
- package/dist/cloudwatch.transport-pNBNWJLt.js.map +1 -0
- package/dist/cloudwatch.transport-yBwm4OeO.mjs +360 -0
- package/dist/cloudwatch.transport-yBwm4OeO.mjs.map +1 -0
- package/dist/coerce.utils-BN980Y9V.js +44 -0
- package/dist/coerce.utils-BN980Y9V.js.map +1 -0
- package/dist/coerce.utils-Dxv4_ikC.mjs +38 -0
- package/dist/coerce.utils-Dxv4_ikC.mjs.map +1 -0
- package/dist/correlation.d.mts +238 -0
- package/dist/correlation.d.mts.map +1 -0
- package/dist/correlation.d.ts +238 -0
- package/dist/correlation.d.ts.map +1 -0
- package/dist/correlation.js +272 -0
- package/dist/correlation.js.map +1 -0
- package/dist/correlation.mjs +261 -0
- package/dist/correlation.mjs.map +1 -0
- package/dist/gcp.d.mts +3 -0
- package/dist/gcp.d.ts +3 -0
- package/dist/gcp.js +6 -0
- package/dist/gcp.mjs +6 -0
- package/dist/gcp.transport-BJuNRFe_.mjs +192 -0
- package/dist/gcp.transport-BJuNRFe_.mjs.map +1 -0
- package/dist/gcp.transport-BOhkVKlI.d.ts +71 -0
- package/dist/gcp.transport-BOhkVKlI.d.ts.map +1 -0
- package/dist/gcp.transport-Bi6CUqZR.d.mts +71 -0
- package/dist/gcp.transport-Bi6CUqZR.d.mts.map +1 -0
- package/dist/gcp.transport-SHdtc1n0.js +198 -0
- package/dist/gcp.transport-SHdtc1n0.js.map +1 -0
- package/dist/{index-CwFww7VC.d.ts → index-BPKwwERo.d.mts} +18 -174
- package/dist/index-BPKwwERo.d.mts.map +1 -0
- package/dist/{index-DnyeaoZU.d.mts → index-C1X-TE5I.d.ts} +18 -174
- package/dist/index-C1X-TE5I.d.ts.map +1 -0
- package/dist/index.d.mts +41 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +40 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +87 -147
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +62 -132
- package/dist/index.mjs.map +1 -1
- package/dist/internal-log-BUJYMZbE.js +70 -0
- package/dist/internal-log-BUJYMZbE.js.map +1 -0
- package/dist/internal-log-Cm8SOWSV.mjs +52 -0
- package/dist/internal-log-Cm8SOWSV.mjs.map +1 -0
- package/dist/{logitron-logger.module-BIGTm2V6.mjs → logitron-logger.module-Bs3XYZgF.mjs} +266 -166
- package/dist/logitron-logger.module-Bs3XYZgF.mjs.map +1 -0
- package/dist/{logitron-logger.module-BTxDpK6u.js → logitron-logger.module-BsDZR5BH.js} +297 -203
- package/dist/logitron-logger.module-BsDZR5BH.js.map +1 -0
- package/dist/{logitron-logger.module-BmT-ewin.d.ts → logitron-logger.module-CxT1F6Cm.d.ts} +23 -10
- package/dist/logitron-logger.module-CxT1F6Cm.d.ts.map +1 -0
- package/dist/{logitron-logger.module-BCq3sF27.d.mts → logitron-logger.module-zDKVd_o0.d.mts} +23 -10
- package/dist/logitron-logger.module-zDKVd_o0.d.mts.map +1 -0
- package/dist/middleware.d.mts +5 -2
- package/dist/middleware.d.mts.map +1 -1
- package/dist/middleware.d.ts +5 -2
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +13 -4
- package/dist/middleware.js.map +1 -1
- package/dist/middleware.mjs +14 -4
- package/dist/middleware.mjs.map +1 -1
- package/dist/nest.d.mts +3 -2
- package/dist/nest.d.mts.map +1 -1
- package/dist/nest.d.ts +3 -2
- package/dist/nest.d.ts.map +1 -1
- package/dist/nest.js +6 -2
- package/dist/nest.mjs +6 -2
- package/dist/safe-stringify-DJ66tW5I.mjs +118 -0
- package/dist/safe-stringify-DJ66tW5I.mjs.map +1 -0
- package/dist/safe-stringify-DWo3aZp_.js +142 -0
- package/dist/safe-stringify-DWo3aZp_.js.map +1 -0
- package/dist/search-CFQRISUv.mjs +1596 -0
- package/dist/search-CFQRISUv.mjs.map +1 -0
- package/dist/search-CQOo-Iq6.d.mts +816 -0
- package/dist/search-CQOo-Iq6.d.mts.map +1 -0
- package/dist/search-DujhR94O.d.ts +816 -0
- package/dist/search-DujhR94O.d.ts.map +1 -0
- package/dist/search-njTI2hdo.js +1631 -0
- package/dist/search-njTI2hdo.js.map +1 -0
- package/dist/search.d.mts +4 -1
- package/dist/search.d.ts +4 -1
- package/dist/search.js +9 -1
- package/dist/search.mjs +3 -2
- package/dist/testing.d.mts +2 -1
- package/dist/testing.d.mts.map +1 -1
- package/dist/testing.d.ts +2 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/{transport.manager-ciG4r5uz.js → transport.manager-BivyUTtU.js} +497 -437
- package/dist/transport.manager-BivyUTtU.js.map +1 -0
- package/dist/{transport.manager-DETpXuaY.mjs → transport.manager-D6KL3t9V.mjs} +473 -364
- package/dist/transport.manager-D6KL3t9V.mjs.map +1 -0
- package/dist/transport.types-B5vcyv2k.d.mts +187 -0
- package/dist/transport.types-B5vcyv2k.d.mts.map +1 -0
- package/dist/transport.types-BuY84TwO.d.ts +187 -0
- package/dist/transport.types-BuY84TwO.d.ts.map +1 -0
- package/dist/transports.d.mts +90 -29
- package/dist/transports.d.mts.map +1 -1
- package/dist/transports.d.ts +90 -29
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +14 -2
- package/dist/transports.mjs +10 -2
- package/dist/worker-entry.js +1241 -0
- package/dist/worker.d.mts +3 -0
- package/dist/worker.d.ts +3 -0
- package/dist/worker.js +4 -0
- package/dist/worker.mjs +4 -0
- package/dist/worker.transport-BP8Q28Z2.d.mts +76 -0
- package/dist/worker.transport-BP8Q28Z2.d.mts.map +1 -0
- package/dist/worker.transport-BhMyvqQ2.mjs +167 -0
- package/dist/worker.transport-BhMyvqQ2.mjs.map +1 -0
- package/dist/worker.transport-CfH6z37Z.js +168 -0
- package/dist/worker.transport-CfH6z37Z.js.map +1 -0
- package/dist/worker.transport-mKXgNK0L.d.ts +76 -0
- package/dist/worker.transport-mKXgNK0L.d.ts.map +1 -0
- package/package.json +23 -18
- package/dist/index-CwFww7VC.d.ts.map +0 -1
- package/dist/index-DnyeaoZU.d.mts.map +0 -1
- package/dist/logitron-logger.module-BCq3sF27.d.mts.map +0 -1
- package/dist/logitron-logger.module-BIGTm2V6.mjs.map +0 -1
- package/dist/logitron-logger.module-BTxDpK6u.js.map +0 -1
- package/dist/logitron-logger.module-BmT-ewin.d.ts.map +0 -1
- package/dist/search-Cg_OasF-.d.ts +0 -1
- package/dist/search-DN676Dnz.d.mts +0 -1
- package/dist/search-DOvSI-mb.mjs +0 -1
- package/dist/search-DoZF3RZj.js +0 -0
- package/dist/transport.manager-DETpXuaY.mjs.map +0 -1
- package/dist/transport.manager-ciG4r5uz.js.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import "./
|
|
1
|
+
import { n as internalLog, r as internalWarn, t as internalError } from "./internal-log-Cm8SOWSV.mjs";
|
|
2
|
+
import { i as stringifyForLog, n as retrocycle, r as safeStringify, t as decycleValue } from "./safe-stringify-DJ66tW5I.mjs";
|
|
3
|
+
import { i as HttpError, n as DEFAULT_MAX_BUFFER_SIZE, r as DEFAULT_REQUEST_TIMEOUT_MS, t as BatchBuffer } from "./batch-buffer-PGvSgbmd.mjs";
|
|
4
|
+
import { n as createExpressContextMiddleware, r as createFastifyContextHook, t as LogixiaContext } from "./async-context-CwBNMm2E.mjs";
|
|
5
|
+
import { A as resetShutdownHandlers, B as DEFAULT_LOG_COLORS, C as runWithTraceId, D as deregisterFromShutdown, E as _shutdownRegistrySize, F as getOtelMetaFields, G as usePlugin, H as LogLevel, I as initOtelBridge, L as isError, M as redactObject, N as disableOtelBridge, O as flushOnExit, P as getActiveOtelContext, R as normalizeError, S as getTraceContextKey, T as traceStorage, U as PluginRegistry, V as DEFAULT_LOG_LEVELS, W as globalPluginRegistry, _ as TraceContext, a as WebSocketTraceInterceptor, b as extractTraceId, c as __decorateParam, d as __decorate, f as __decorateMetadata, g as TRACE_CONTEXT_KEY, h as DEFAULT_TRACE_HEADERS, i as LogixiaLoggerModule, j as applyRedaction, k as registerForShutdown, l as KafkaTraceInterceptor, m as createLogger$1, n as LOGIXIA_LOGGER_PREFIX, p as LogixiaLogger, r as LOGIXIA_TRACE_CONFIG, s as resolveResponseHeader, t as LOGIXIA_LOGGER_CONFIG, u as LogixiaLoggerService, v as _setActiveContextKey, w as setTraceId, x as getCurrentTraceId, y as createTraceMiddleware, z as serializeError } from "./logitron-logger.module-Bs3XYZgF.mjs";
|
|
6
|
+
import { t as safeToString } from "./coerce.utils-Dxv4_ikC.mjs";
|
|
7
|
+
import "./transport.manager-D6KL3t9V.mjs";
|
|
8
|
+
import { a as BasicSearchEngine, i as CorrelationEngine, n as PatternRecognitionEngine, o as BasicLogIndexer, r as NLPSearchEngine, t as SearchManager } from "./search-CFQRISUv.mjs";
|
|
4
9
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
5
10
|
import { Catch, Inject, Optional } from "@nestjs/common";
|
|
6
11
|
|
|
@@ -251,7 +256,7 @@ function LogMethod(options = {}) {
|
|
|
251
256
|
const label = options.label ?? `${className}.${methodName}`;
|
|
252
257
|
let _warnedNoLogger = false;
|
|
253
258
|
const reportLogFailure = (phase, err) => {
|
|
254
|
-
|
|
259
|
+
internalError(`@LogMethod(${label}) ${phase} log failed: ${String(err)}`);
|
|
255
260
|
};
|
|
256
261
|
const emit$1 = (logger$1, phase, message, data) => {
|
|
257
262
|
const logFnRaw = logger$1[level];
|
|
@@ -270,7 +275,7 @@ function LogMethod(options = {}) {
|
|
|
270
275
|
const logger$1 = this.logger ?? LogixiaLoggerModule._globalLogger ?? void 0;
|
|
271
276
|
if (!logger$1 && !_warnedNoLogger) {
|
|
272
277
|
_warnedNoLogger = true;
|
|
273
|
-
|
|
278
|
+
internalWarn(`@LogMethod on ${label}: no logger available. Either inject LogixiaLoggerService as this.logger or ensure LogixiaLoggerModule is initialised.`);
|
|
274
279
|
}
|
|
275
280
|
const start = Date.now();
|
|
276
281
|
const entry = { method: label };
|
|
@@ -329,7 +334,7 @@ let LogixiaExceptionFilter = class LogixiaExceptionFilter$1 {
|
|
|
329
334
|
...errorResponse.meta.trace_id !== void 0 ? { trace_id: errorResponse.meta.trace_id } : {}
|
|
330
335
|
};
|
|
331
336
|
const onLogFailure = (err) => {
|
|
332
|
-
|
|
337
|
+
internalError(`ExceptionFilter failed to write log entry: ${String(err)}`);
|
|
333
338
|
};
|
|
334
339
|
let logPromise;
|
|
335
340
|
if (httpStatus >= 500) {
|
|
@@ -677,103 +682,6 @@ function createLevelControlHandler(logger$1, options = {}) {
|
|
|
677
682
|
};
|
|
678
683
|
}
|
|
679
684
|
|
|
680
|
-
//#endregion
|
|
681
|
-
//#region src/utils/safe-stringify.ts
|
|
682
|
-
/** Build a JSONPath like `$["a"][0]["b"]` for a decycle pointer. */
|
|
683
|
-
function jsonPath(parts) {
|
|
684
|
-
let path = "$";
|
|
685
|
-
for (const p of parts) path += typeof p === "number" ? `[${p}]` : `[${JSON.stringify(p)}]`;
|
|
686
|
-
return path;
|
|
687
|
-
}
|
|
688
|
-
/**
|
|
689
|
-
* Serialize any value to JSON without throwing on circular references or BigInt.
|
|
690
|
-
* Circular refs become `"[Circular]"` (or `{ $ref }` pointers when `decycle`).
|
|
691
|
-
*/
|
|
692
|
-
function safeStringify(value, options = {}) {
|
|
693
|
-
const { indent, deterministic = false, decycle = false, bigint = "string" } = options;
|
|
694
|
-
if (decycle) return JSON.stringify(decycleValue(value, bigint), void 0, indent);
|
|
695
|
-
const seen = /* @__PURE__ */ new WeakSet();
|
|
696
|
-
const transform = (val) => {
|
|
697
|
-
if (typeof val === "bigint") return bigint === "number" ? Number(val) : val.toString();
|
|
698
|
-
if (typeof val === "function") return `[Function: ${val.name || "anonymous"}]`;
|
|
699
|
-
if (typeof val === "symbol") return val.toString();
|
|
700
|
-
if (val === null || typeof val !== "object") return val;
|
|
701
|
-
if (seen.has(val)) return "[Circular]";
|
|
702
|
-
seen.add(val);
|
|
703
|
-
let out;
|
|
704
|
-
if (Array.isArray(val)) out = val.map((item) => transform(item));
|
|
705
|
-
else if (val instanceof Date) out = val.toISOString();
|
|
706
|
-
else {
|
|
707
|
-
const rec = val;
|
|
708
|
-
const keys = deterministic ? Object.keys(rec).sort() : Object.keys(rec);
|
|
709
|
-
const obj = {};
|
|
710
|
-
for (const k of keys) {
|
|
711
|
-
if (k === "__proto__" || k === "constructor" || k === "prototype") continue;
|
|
712
|
-
obj[k] = transform(rec[k]);
|
|
713
|
-
}
|
|
714
|
-
out = obj;
|
|
715
|
-
}
|
|
716
|
-
seen.delete(val);
|
|
717
|
-
return out;
|
|
718
|
-
};
|
|
719
|
-
return JSON.stringify(transform(value), void 0, indent);
|
|
720
|
-
}
|
|
721
|
-
/**
|
|
722
|
-
* Replace repeated object references with round-trippable `{ "$ref": "$..." }`
|
|
723
|
-
* JSONPath pointers (the classic Crockford decycle). Pair with {@link retrocycle}
|
|
724
|
-
* to reconstruct the original shared/circular graph.
|
|
725
|
-
*/
|
|
726
|
-
function decycleValue(value, bigint = "string") {
|
|
727
|
-
const paths = /* @__PURE__ */ new WeakMap();
|
|
728
|
-
const walk = (val, path) => {
|
|
729
|
-
if (typeof val === "bigint") return bigint === "number" ? Number(val) : val.toString();
|
|
730
|
-
if (val === null || typeof val !== "object") return val;
|
|
731
|
-
if (val instanceof Date) return val.toISOString();
|
|
732
|
-
const existing = paths.get(val);
|
|
733
|
-
if (existing !== void 0) return { $ref: existing };
|
|
734
|
-
paths.set(val, jsonPath(path));
|
|
735
|
-
if (Array.isArray(val)) return val.map((item, i) => walk(item, [...path, i]));
|
|
736
|
-
const rec = val;
|
|
737
|
-
const obj = {};
|
|
738
|
-
for (const k of Object.keys(rec)) {
|
|
739
|
-
if (k === "__proto__" || k === "constructor" || k === "prototype") continue;
|
|
740
|
-
obj[k] = walk(rec[k], [...path, k]);
|
|
741
|
-
}
|
|
742
|
-
return obj;
|
|
743
|
-
};
|
|
744
|
-
return walk(value, []);
|
|
745
|
-
}
|
|
746
|
-
/**
|
|
747
|
-
* Inverse of {@link decycleValue}: resolve `{ "$ref": "$..." }` pointers back
|
|
748
|
-
* into the live object graph (mutates and returns the parsed input).
|
|
749
|
-
*/
|
|
750
|
-
function retrocycle(root) {
|
|
751
|
-
const refRe = /^\$(?:\[(?:\d+|"(?:[^"\\]|\\.)*")\])*$/;
|
|
752
|
-
const resolve = (path) => {
|
|
753
|
-
const segs = [];
|
|
754
|
-
const partRe = /\[(\d+|"(?:[^"\\]|\\.)*")\]/g;
|
|
755
|
-
let m;
|
|
756
|
-
while ((m = partRe.exec(path)) !== null) {
|
|
757
|
-
const raw = m[1];
|
|
758
|
-
segs.push(raw.startsWith("\"") ? JSON.parse(raw) : Number(raw));
|
|
759
|
-
}
|
|
760
|
-
let node = root;
|
|
761
|
-
for (const s of segs) node = node[s];
|
|
762
|
-
return node;
|
|
763
|
-
};
|
|
764
|
-
const walk = (val) => {
|
|
765
|
-
if (val === null || typeof val !== "object") return;
|
|
766
|
-
const rec = val;
|
|
767
|
-
for (const k of Object.keys(rec)) {
|
|
768
|
-
const child = rec[k];
|
|
769
|
-
if (child !== null && typeof child === "object" && typeof child.$ref === "string" && refRe.test(child.$ref)) rec[k] = resolve(child.$ref);
|
|
770
|
-
else walk(child);
|
|
771
|
-
}
|
|
772
|
-
};
|
|
773
|
-
walk(root);
|
|
774
|
-
return root;
|
|
775
|
-
}
|
|
776
|
-
|
|
777
685
|
//#endregion
|
|
778
686
|
//#region src/utils/typed-logger.ts
|
|
779
687
|
/**
|
|
@@ -939,6 +847,15 @@ function wideEventMiddleware(logger$1, options = {}) {
|
|
|
939
847
|
|
|
940
848
|
//#endregion
|
|
941
849
|
//#region src/transports/otlp.transport.ts
|
|
850
|
+
const HEX_32 = /^[0-9a-f]{32}$/;
|
|
851
|
+
/**
|
|
852
|
+
* OTLP JSON wants a 32-char lowercase hex trace id. Dashed UUIDs are
|
|
853
|
+
* normalised; anything else (or all zeros) returns undefined.
|
|
854
|
+
*/
|
|
855
|
+
function toOtlpTraceId(id) {
|
|
856
|
+
const hex = id.replace(/-/g, "").toLowerCase();
|
|
857
|
+
return HEX_32.test(hex) && hex !== "0".repeat(32) ? hex : void 0;
|
|
858
|
+
}
|
|
942
859
|
/**
|
|
943
860
|
* Map a logixia level name to an OTel SeverityNumber (1–24) and text.
|
|
944
861
|
* Per the OTel logs SDK spec: TRACE=1, DEBUG=5, INFO=9, WARN=13, ERROR=17,
|
|
@@ -989,7 +906,7 @@ function toAnyValue(value) {
|
|
|
989
906
|
if (typeof value === "bigint") return { stringValue: value.toString() };
|
|
990
907
|
if (value === null || value === void 0) return { stringValue: "" };
|
|
991
908
|
try {
|
|
992
|
-
return { stringValue:
|
|
909
|
+
return { stringValue: stringifyForLog(value) };
|
|
993
910
|
} catch {
|
|
994
911
|
return { stringValue: String(value) };
|
|
995
912
|
}
|
|
@@ -1004,13 +921,19 @@ function toAttributes(rec) {
|
|
|
1004
921
|
var OtlpLogTransport = class {
|
|
1005
922
|
constructor(config) {
|
|
1006
923
|
this.name = "otlp";
|
|
1007
|
-
this.batch = [];
|
|
1008
924
|
this.flushTimer = null;
|
|
1009
925
|
this.url = config.url;
|
|
1010
926
|
this.headers = config.headers ?? {};
|
|
1011
927
|
this.batchSize = config.batchSize ?? 100;
|
|
1012
928
|
this.flushIntervalMs = config.flushIntervalMs ?? 5e3;
|
|
929
|
+
this.requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
1013
930
|
this.level = config.level;
|
|
931
|
+
this.buffer = new BatchBuffer({
|
|
932
|
+
name: "OtlpLogTransport",
|
|
933
|
+
batchSize: this.batchSize,
|
|
934
|
+
maxBufferSize: config.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE,
|
|
935
|
+
send: (entries) => this.send(entries)
|
|
936
|
+
});
|
|
1014
937
|
this.resourceAttrs = toAttributes({
|
|
1015
938
|
"service.name": config.serviceName ?? "logixia",
|
|
1016
939
|
...config.serviceVersion ? { "service.version": config.serviceVersion } : {},
|
|
@@ -1023,8 +946,8 @@ var OtlpLogTransport = class {
|
|
|
1023
946
|
if (this.flushTimer.unref) this.flushTimer.unref();
|
|
1024
947
|
}
|
|
1025
948
|
write(entry) {
|
|
1026
|
-
this.
|
|
1027
|
-
|
|
949
|
+
this.buffer.push(entry);
|
|
950
|
+
this.buffer.flushIfFull();
|
|
1028
951
|
}
|
|
1029
952
|
/** Convert one entry into an OTLP LogRecord. */
|
|
1030
953
|
toLogRecord(entry) {
|
|
@@ -1042,11 +965,18 @@ var OtlpLogTransport = class {
|
|
|
1042
965
|
body: { stringValue: entry.message },
|
|
1043
966
|
attributes: toAttributes(attrs)
|
|
1044
967
|
};
|
|
1045
|
-
if (entry.traceId)
|
|
968
|
+
if (entry.traceId) {
|
|
969
|
+
const traceId = toOtlpTraceId(entry.traceId);
|
|
970
|
+
if (traceId) record["traceId"] = traceId;
|
|
971
|
+
else record["attributes"].push({
|
|
972
|
+
key: "trace_id",
|
|
973
|
+
value: { stringValue: entry.traceId }
|
|
974
|
+
});
|
|
975
|
+
}
|
|
1046
976
|
return record;
|
|
1047
977
|
}
|
|
1048
978
|
buildPayload(entries) {
|
|
1049
|
-
return
|
|
979
|
+
return stringifyForLog({ resourceLogs: [{
|
|
1050
980
|
resource: { attributes: this.resourceAttrs },
|
|
1051
981
|
scopeLogs: [{
|
|
1052
982
|
scope: { name: "logixia" },
|
|
@@ -1054,40 +984,40 @@ var OtlpLogTransport = class {
|
|
|
1054
984
|
}]
|
|
1055
985
|
}] });
|
|
1056
986
|
}
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
const entries = this.batch.splice(0, this.batchSize);
|
|
1060
|
-
try {
|
|
1061
|
-
await this.send(entries);
|
|
1062
|
-
} catch (err) {
|
|
1063
|
-
internalError("OtlpLogTransport flush error", err);
|
|
1064
|
-
this.batch.unshift(...entries);
|
|
1065
|
-
return;
|
|
1066
|
-
}
|
|
1067
|
-
}
|
|
987
|
+
flush() {
|
|
988
|
+
return this.buffer.flush();
|
|
1068
989
|
}
|
|
1069
990
|
async send(entries) {
|
|
1070
991
|
if (typeof fetch !== "function") {
|
|
1071
992
|
internalWarn("OtlpLogTransport: global fetch unavailable — cannot export logs");
|
|
1072
993
|
return;
|
|
1073
994
|
}
|
|
1074
|
-
const
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
995
|
+
const controller = new AbortController();
|
|
996
|
+
const timer = setTimeout(() => controller.abort(), this.requestTimeoutMs);
|
|
997
|
+
try {
|
|
998
|
+
const res = await fetch(this.url, {
|
|
999
|
+
method: "POST",
|
|
1000
|
+
headers: {
|
|
1001
|
+
"Content-Type": "application/json",
|
|
1002
|
+
...this.headers
|
|
1003
|
+
},
|
|
1004
|
+
body: this.buildPayload(entries),
|
|
1005
|
+
signal: controller.signal
|
|
1006
|
+
});
|
|
1007
|
+
if (!res.ok) throw new HttpError(res.status, "", "OTLP export");
|
|
1008
|
+
} catch (err) {
|
|
1009
|
+
if (controller.signal.aborted) throw new Error(`OTLP export timed out after ${this.requestTimeoutMs}ms`, { cause: err });
|
|
1010
|
+
throw err;
|
|
1011
|
+
} finally {
|
|
1012
|
+
clearTimeout(timer);
|
|
1013
|
+
}
|
|
1083
1014
|
}
|
|
1084
1015
|
async close() {
|
|
1085
1016
|
if (this.flushTimer) {
|
|
1086
1017
|
clearInterval(this.flushTimer);
|
|
1087
1018
|
this.flushTimer = null;
|
|
1088
1019
|
}
|
|
1089
|
-
|
|
1090
|
-
if (this.batch.length > 0) internalError(`OtlpLogTransport closing with ${this.batch.length} undelivered record(s)`);
|
|
1020
|
+
await this.buffer.close();
|
|
1091
1021
|
}
|
|
1092
1022
|
};
|
|
1093
1023
|
|
|
@@ -1417,5 +1347,5 @@ const logger = new LogixiaLogger(DEFAULT_CONFIG);
|
|
|
1417
1347
|
*/
|
|
1418
1348
|
|
|
1419
1349
|
//#endregion
|
|
1420
|
-
export { DEFAULT_CONFIG, DEFAULT_LOG_COLORS, DEFAULT_LOG_LEVELS, DEFAULT_TRACE_HEADERS, ErrorResponseBuilder, InjectLogger, JsonFormatter, KafkaTraceInterceptor, LOGIXIA_LOGGER_CONFIG, LOGIXIA_LOGGER_PREFIX, LogLevel, LogMethod, LogixiaContext, LogixiaException, LogixiaExceptionFilter, LogixiaLogger, LogixiaLoggerModule, LogixiaLoggerService, MetricsPlugin, OtlpLogTransport, PluginRegistry, TRACE_CONTEXT_KEY, TextFormatter, TraceContext, WebSocketTraceInterceptor, _setActiveContextKey, addEventFields, applyRedaction, createExpressContextMiddleware, createFastifyContextHook, createLevelControlHandler, createLogger, createLoggerService, createMetricsPlugin, createTraceMiddleware, createTypedLogger, decycleValue, defineLogSchema, deregisterFromShutdown, disableOtelBridge, extractTraceId, flushOnExit, generateRequestId, generateTraceId, getActiveOtelContext, getCurrentTraceId, getEventFields, getOtelMetaFields, getTraceContextKey, globalPluginRegistry, initOtelBridge, isError, isLogixiaException, logger, normalizeError, redactObject, registerForShutdown, registerLevelSignal, resetShutdownHandlers, retrocycle, runWithTraceId, safeStringify, serializeError, setEventField, setTraceId, toOtelSeverity, traceStorage, usePlugin, wideEventMiddleware, withWideEvent };
|
|
1350
|
+
export { BasicLogIndexer, BasicSearchEngine, CorrelationEngine, DEFAULT_CONFIG, DEFAULT_LOG_COLORS, DEFAULT_LOG_LEVELS, DEFAULT_TRACE_HEADERS, ErrorResponseBuilder, InjectLogger, JsonFormatter, KafkaTraceInterceptor, LOGIXIA_LOGGER_CONFIG, LOGIXIA_LOGGER_PREFIX, LOGIXIA_TRACE_CONFIG, LogLevel, LogMethod, LogixiaContext, LogixiaException, LogixiaExceptionFilter, LogixiaLogger, LogixiaLoggerModule, LogixiaLoggerService, MetricsPlugin, NLPSearchEngine, OtlpLogTransport, PatternRecognitionEngine, PluginRegistry, SearchManager, TRACE_CONTEXT_KEY, TextFormatter, TraceContext, WebSocketTraceInterceptor, _setActiveContextKey, _shutdownRegistrySize, addEventFields, applyRedaction, createExpressContextMiddleware, createFastifyContextHook, createLevelControlHandler, createLogger, createLoggerService, createMetricsPlugin, createTraceMiddleware, createTypedLogger, decycleValue, defineLogSchema, deregisterFromShutdown, disableOtelBridge, extractTraceId, flushOnExit, generateRequestId, generateTraceId, getActiveOtelContext, getCurrentTraceId, getEventFields, getOtelMetaFields, getTraceContextKey, globalPluginRegistry, initOtelBridge, isError, isLogixiaException, logger, normalizeError, redactObject, registerForShutdown, registerLevelSignal, resetShutdownHandlers, retrocycle, runWithTraceId, safeStringify, serializeError, setEventField, setTraceId, stringifyForLog, toOtelSeverity, traceStorage, usePlugin, wideEventMiddleware, withWideEvent };
|
|
1421
1351
|
//# sourceMappingURL=index.mjs.map
|