logixia 2.0.11 → 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-D8um9I5V.js → async-context-Dgl3ZLyb.js} +3 -3
- package/dist/{async-context-D8um9I5V.js.map → async-context-Dgl3ZLyb.js.map} +1 -1
- package/dist/{async-context-BGUCdYAa.mjs → async-context-fBqC5lNc.mjs} +2 -2
- package/dist/{async-context-BGUCdYAa.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-CTnfwA0F.mjs → azure-monitor.transport-DGiacfvT.mjs} +4 -4
- package/dist/{azure-monitor.transport-CTnfwA0F.mjs.map → azure-monitor.transport-DGiacfvT.mjs.map} +1 -1
- package/dist/{azure-monitor.transport-C8KdmsSw.js → azure-monitor.transport-DX3fuK2t.js} +4 -4
- package/dist/{azure-monitor.transport-C8KdmsSw.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-BTQdAXwC.js → batch-buffer-BLmVvJAZ.js} +2 -2
- package/dist/{batch-buffer-BTQdAXwC.js.map → batch-buffer-BLmVvJAZ.js.map} +1 -1
- package/dist/{batch-buffer-BJqzpfpT.mjs → batch-buffer-CM-lK_Qy.mjs} +2 -2
- package/dist/{batch-buffer-BJqzpfpT.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 +18 -4
- package/dist/browser.js.map +1 -1
- package/dist/browser.mjs +18 -4
- package/dist/browser.mjs.map +1 -1
- package/dist/{builder-C6kKEVrU.mjs → builder-CA_dokb4.mjs} +108 -61
- package/dist/builder-CA_dokb4.mjs.map +1 -0
- package/dist/{builder-Up4YxX7l.js → builder-jMlVYaQa.js} +114 -67
- package/dist/builder-jMlVYaQa.js.map +1 -0
- 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-Bl1qzdBx.mjs → cloudwatch.transport-Cr0fEpko.mjs} +5 -5
- package/dist/{cloudwatch.transport-Bl1qzdBx.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-BoCyxNKO.js → cloudwatch.transport-Lst1Bbmr.js} +5 -5
- package/dist/{cloudwatch.transport-BoCyxNKO.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 +2 -2
- package/dist/correlation.mjs +2 -2
- package/dist/{entry-fields-CJbeaoBs.js → entry-fields-BSLkzw18.js} +3 -3
- package/dist/{entry-fields-CJbeaoBs.js.map → entry-fields-BSLkzw18.js.map} +1 -1
- package/dist/{entry-fields-D_aNnjg0.mjs → entry-fields-J1OBi24o.mjs} +2 -2
- package/dist/{entry-fields-D_aNnjg0.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-D_NHVZrw.js → gcp.transport-5-ZIjN8r.js} +5 -5
- package/dist/{gcp.transport-D_NHVZrw.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-DOH4bpWM.mjs → gcp.transport-Cw3Qke85.mjs} +5 -5
- package/dist/{gcp.transport-DOH4bpWM.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 +16 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -8
- 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.ts +1 -1
- package/dist/middleware.js +5 -4
- package/dist/middleware.js.map +1 -1
- package/dist/middleware.mjs +3 -2
- package/dist/middleware.mjs.map +1 -1
- package/dist/nest.d.mts +47 -15
- package/dist/nest.d.mts.map +1 -1
- package/dist/nest.d.ts +47 -15
- package/dist/nest.d.ts.map +1 -1
- package/dist/nest.js +169 -48
- package/dist/nest.js.map +1 -1
- package/dist/nest.mjs +166 -45
- package/dist/nest.mjs.map +1 -1
- package/dist/{otel-DH6-G6DR.js → otel-8ypFGG19.js} +319 -66
- package/dist/otel-8ypFGG19.js.map +1 -0
- package/dist/{otel-DAVxpArV.mjs → otel-b-s2QbY4.mjs} +319 -66
- 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/{safe-stringify-pZOnzGRJ.mjs → safe-stringify-B5p5ktFe.mjs} +2 -2
- package/dist/{safe-stringify-pZOnzGRJ.mjs.map → safe-stringify-B5p5ktFe.mjs.map} +1 -1
- package/dist/{safe-stringify-CJisLyZ3.js → safe-stringify-J3sh-7YM.js} +5 -5
- package/dist/{safe-stringify-CJisLyZ3.js.map → safe-stringify-J3sh-7YM.js.map} +1 -1
- package/dist/{search-Crf2IEoA.d.mts → search-B-hJe2N-.d.mts} +7 -3
- package/dist/{search-Crf2IEoA.d.mts.map → search-B-hJe2N-.d.mts.map} +1 -1
- package/dist/{search-B4eEzrhM.d.ts → search-BlKBLm5D.d.ts} +7 -3
- package/dist/{search-B4eEzrhM.d.ts.map → search-BlKBLm5D.d.ts.map} +1 -1
- package/dist/{search-CjYl-mo5.mjs → search-CTR4XNHq.mjs} +52 -14
- package/dist/search-CTR4XNHq.mjs.map +1 -0
- package/dist/{search-CJw_xoQl.js → search-_qx4YzRP.js} +52 -14
- 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-6hdODxBb.js → secret-config--cVTOWwp.js} +6 -5
- package/dist/{secret-config-6hdODxBb.js.map → secret-config--cVTOWwp.js.map} +1 -1
- package/dist/{secret-config-D1F4MW69.mjs → secret-config-GKmb15Me.mjs} +3 -2
- package/dist/{secret-config-D1F4MW69.mjs.map → secret-config-GKmb15Me.mjs.map} +1 -1
- package/dist/{sensitive-names-wv27qBQC.mjs → sensitive-names-BiBM6R1X.mjs} +2 -28
- package/dist/sensitive-names-BiBM6R1X.mjs.map +1 -0
- package/dist/{sensitive-names-CNgHaqv9.js → sensitive-names-NiKIRhp5.js} +1 -39
- package/dist/sensitive-names-NiKIRhp5.js.map +1 -0
- package/dist/{slack.transport-C6E0l4kw.d.ts → slack.transport-5OPL7H3u.d.mts} +76 -3
- package/dist/slack.transport-5OPL7H3u.d.mts.map +1 -0
- package/dist/{slack.transport-BDyENuR0.d.mts → slack.transport-BFpBD_Ri.d.ts} +76 -3
- package/dist/slack.transport-BFpBD_Ri.d.ts.map +1 -0
- package/dist/{slack.transport-CEYBVzUj.js → slack.transport-Cpx5fKga.js} +231 -8
- package/dist/slack.transport-Cpx5fKga.js.map +1 -0
- package/dist/{slack.transport-YvaLJxNv.mjs → slack.transport-Qwj9WkrJ.mjs} +226 -9
- 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 +91 -11
- 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-DgK_ZXlB.mjs → worker.transport-BHnWDXPH.mjs} +40 -2
- package/dist/worker.transport-BHnWDXPH.mjs.map +1 -0
- package/dist/{worker.transport-CwNpH98o.js → worker.transport-C7jNGhev.js} +40 -2
- 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 +1 -1
- package/dist/builder-C6kKEVrU.mjs.map +0 -1
- package/dist/builder-Up4YxX7l.js.map +0 -1
- package/dist/otel-DAVxpArV.mjs.map +0 -1
- package/dist/otel-DH6-G6DR.js.map +0 -1
- package/dist/search-CJw_xoQl.js.map +0 -1
- package/dist/search-CjYl-mo5.mjs.map +0 -1
- package/dist/sensitive-names-CNgHaqv9.js.map +0 -1
- package/dist/sensitive-names-wv27qBQC.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-CEYBVzUj.js.map +0 -1
- package/dist/slack.transport-YvaLJxNv.mjs.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-CwNpH98o.js.map +0 -1
- package/dist/worker.transport-DgK_ZXlB.mjs.map +0 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as assignOwn } from "./own-property-CjFw9qwZ.mjs";
|
|
2
2
|
import { o as TraceContext } from "./request-trace-Dekcnenb.mjs";
|
|
3
|
-
import { t as LogixiaContext } from "./async-context-
|
|
4
|
-
import { n as
|
|
3
|
+
import { t as LogixiaContext } from "./async-context-fBqC5lNc.mjs";
|
|
4
|
+
import { a as buildNameSet, n as DEFAULT_REDACT_QUERY_PARAMS, o as redactUrlQuery, r as SENSITIVE_KEY_NAMES, s as redactUrlsInText } from "./sensitive-names-BiBM6R1X.mjs";
|
|
5
|
+
import { n as protectSecrets } from "./secret-config-GKmb15Me.mjs";
|
|
5
6
|
import { n as internalLog, r as internalWarn, t as internalError } from "./internal-log-Cy5nF1ZL.mjs";
|
|
7
|
+
import { i as stringifyForLog } from "./safe-stringify-B5p5ktFe.mjs";
|
|
6
8
|
import { n as safeToString } from "./csv.utils-ZdxSod5g.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import { c as TransportManager, n as _getOtelPayloadIfEnabled, r as _isOtelBridgeEnabled, v as stripControlChars } from "./otel-DAVxpArV.mjs";
|
|
9
|
+
import { c as TransportManager, n as _getOtelPayloadIfEnabled, r as _isOtelBridgeEnabled, v as stripControlChars } from "./otel-b-s2QbY4.mjs";
|
|
9
10
|
import { constants } from "node:os";
|
|
10
11
|
// src/types/index.ts
|
|
11
12
|
const LogLevel = {
|
|
@@ -711,12 +712,28 @@ function isCacheableTraceId(id) {
|
|
|
711
712
|
}
|
|
712
713
|
return true;
|
|
713
714
|
}
|
|
715
|
+
/** Maps a trace id to a stable number in [0, 1): FNV-1a followed by a murmur3 finalizer. */
|
|
716
|
+
function traceFraction(id) {
|
|
717
|
+
let h = 2166136261;
|
|
718
|
+
for (let i = 0; i < id.length; i++) {
|
|
719
|
+
h ^= id.charCodeAt(i);
|
|
720
|
+
h = Math.imul(h, 16777619);
|
|
721
|
+
}
|
|
722
|
+
h ^= h >>> 16;
|
|
723
|
+
h = Math.imul(h, 2246822507);
|
|
724
|
+
h ^= h >>> 13;
|
|
725
|
+
h = Math.imul(h, 3266489909);
|
|
726
|
+
h ^= h >>> 16;
|
|
727
|
+
return (h >>> 0) / 4294967296;
|
|
728
|
+
}
|
|
729
|
+
const ADAPTIVE_BUCKETS = 100;
|
|
714
730
|
var Sampler = class {
|
|
715
731
|
config;
|
|
716
732
|
/**
|
|
717
|
-
* Per-trace
|
|
718
|
-
* re-inserts the key).
|
|
719
|
-
*
|
|
733
|
+
* Per-trace sampling fractions in LRU order (Map preserves insertion order; a
|
|
734
|
+
* hit re-inserts the key). A trace is kept at a level when its fraction is below
|
|
735
|
+
* that level's rate, so it is never fixed by the first level seen. Survives
|
|
736
|
+
* resetStats() so a long trace is not re-evaluated mid-flight. Bounded by size, by an idle TTL (refreshed on hit) and by a hard
|
|
720
737
|
* lifetime measured from the first decision.
|
|
721
738
|
*/
|
|
722
739
|
traceDecisions = /* @__PURE__ */ new Map();
|
|
@@ -725,8 +742,11 @@ var Sampler = class {
|
|
|
725
742
|
traceMaxLifetimeMs = 36e5;
|
|
726
743
|
_tokenBucket = 0;
|
|
727
744
|
_lastRefillMs = Date.now();
|
|
728
|
-
|
|
729
|
-
|
|
745
|
+
_adaptiveBucketMs;
|
|
746
|
+
_adaptiveTotals = new Float64Array(ADAPTIVE_BUCKETS);
|
|
747
|
+
_adaptiveErrorCounts = new Float64Array(ADAPTIVE_BUCKETS);
|
|
748
|
+
_adaptiveBucket = 0;
|
|
749
|
+
_adaptiveTotal = 0;
|
|
730
750
|
_adaptiveErrors = 0;
|
|
731
751
|
_stats = {
|
|
732
752
|
evaluated: 0,
|
|
@@ -737,7 +757,9 @@ var Sampler = class {
|
|
|
737
757
|
};
|
|
738
758
|
_statsTimer;
|
|
739
759
|
constructor(config, onStats) {
|
|
760
|
+
var _config$adaptive;
|
|
740
761
|
this.config = config;
|
|
762
|
+
this._adaptiveBucketMs = Math.max(1, Math.ceil((((_config$adaptive = config.adaptive) === null || _config$adaptive === void 0 ? void 0 : _config$adaptive.windowMs) ?? 1e4) / ADAPTIVE_BUCKETS));
|
|
741
763
|
if (config.maxLogsPerSecond && config.maxLogsPerSecond > 0) this._tokenBucket = config.maxLogsPerSecond;
|
|
742
764
|
const interval = config.statsIntervalMs ?? 6e4;
|
|
743
765
|
if (interval > 0 && onStats) {
|
|
@@ -795,34 +817,38 @@ var Sampler = class {
|
|
|
795
817
|
destroy() {
|
|
796
818
|
if (this._statsTimer) clearInterval(this._statsTimer);
|
|
797
819
|
}
|
|
798
|
-
_sampleByRate(level) {
|
|
820
|
+
_sampleByRate(level, fraction) {
|
|
799
821
|
var _this$config$perLevel2, _this$config$perLevel3;
|
|
800
822
|
const baseRate = ((_this$config$perLevel2 = this.config.perLevel) === null || _this$config$perLevel2 === void 0 ? void 0 : _this$config$perLevel2[level]) ?? ((_this$config$perLevel3 = this.config.perLevel) === null || _this$config$perLevel3 === void 0 ? void 0 : _this$config$perLevel3["*"]) ?? this.config.rate ?? 1;
|
|
801
823
|
const rate = Math.max(baseRate, this._adaptiveBoostRate());
|
|
802
824
|
if (rate >= 1) return true;
|
|
803
825
|
if (rate <= 0) return false;
|
|
826
|
+
if (fraction !== void 0) return fraction < rate;
|
|
804
827
|
return Math.random() < rate;
|
|
805
828
|
}
|
|
806
|
-
/**
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
const
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
const cutoff = now - windowMs;
|
|
818
|
-
const win = this._adaptiveWindow;
|
|
819
|
-
while (this._adaptiveHead < win.length && win[this._adaptiveHead].t < cutoff) {
|
|
820
|
-
if (win[this._adaptiveHead].err) this._adaptiveErrors -= 1;
|
|
821
|
-
this._adaptiveHead += 1;
|
|
829
|
+
/** Moves the ring forward to the bucket holding `now`, dropping buckets that left the window. */
|
|
830
|
+
_advanceAdaptive(now) {
|
|
831
|
+
const target = Math.floor(now / this._adaptiveBucketMs);
|
|
832
|
+
if (target <= this._adaptiveBucket) return this._adaptiveBucket;
|
|
833
|
+
const steps = Math.min(target - this._adaptiveBucket, ADAPTIVE_BUCKETS);
|
|
834
|
+
for (let i = 1; i <= steps; i++) {
|
|
835
|
+
const slot = (this._adaptiveBucket + i) % ADAPTIVE_BUCKETS;
|
|
836
|
+
this._adaptiveTotal -= this._adaptiveTotals[slot];
|
|
837
|
+
this._adaptiveErrors -= this._adaptiveErrorCounts[slot];
|
|
838
|
+
this._adaptiveTotals[slot] = 0;
|
|
839
|
+
this._adaptiveErrorCounts[slot] = 0;
|
|
822
840
|
}
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
841
|
+
this._adaptiveBucket = target;
|
|
842
|
+
return target;
|
|
843
|
+
}
|
|
844
|
+
/** Record one evaluated sample in the current bucket. O(1). */
|
|
845
|
+
_recordAdaptiveSample(level) {
|
|
846
|
+
const slot = this._advanceAdaptive(Date.now()) % ADAPTIVE_BUCKETS;
|
|
847
|
+
this._adaptiveTotals[slot] += 1;
|
|
848
|
+
this._adaptiveTotal += 1;
|
|
849
|
+
if (level === "error" || level === "fatal") {
|
|
850
|
+
this._adaptiveErrorCounts[slot] += 1;
|
|
851
|
+
this._adaptiveErrors += 1;
|
|
826
852
|
}
|
|
827
853
|
}
|
|
828
854
|
/**
|
|
@@ -833,8 +859,9 @@ var Sampler = class {
|
|
|
833
859
|
_adaptiveBoostRate() {
|
|
834
860
|
const cfg = this.config.adaptive;
|
|
835
861
|
if (!cfg) return 0;
|
|
862
|
+
this._advanceAdaptive(Date.now());
|
|
836
863
|
const minSamples = cfg.minSamples ?? 20;
|
|
837
|
-
const total = this.
|
|
864
|
+
const total = this._adaptiveTotal;
|
|
838
865
|
if (total < minSamples) return 0;
|
|
839
866
|
return this._adaptiveErrors / total >= (cfg.errorRateThreshold ?? .05) ? cfg.boostRate ?? 1 : 0;
|
|
840
867
|
}
|
|
@@ -843,8 +870,9 @@ var Sampler = class {
|
|
|
843
870
|
return this._adaptiveBoostRate() > 0;
|
|
844
871
|
}
|
|
845
872
|
/**
|
|
846
|
-
*
|
|
847
|
-
* idle past the TTL, or older than the hard lifetime, are
|
|
873
|
+
* Decide a trace by comparing its stable fraction with the level's rate, caching
|
|
874
|
+
* the fraction. Entries idle past the TTL, or older than the hard lifetime, are
|
|
875
|
+
* recomputed; the least
|
|
848
876
|
* recently used entry is evicted once the cap is reached. IDs that are empty,
|
|
849
877
|
* too long or contain control characters are sampled independently and never cached.
|
|
850
878
|
*/
|
|
@@ -856,12 +884,12 @@ var Sampler = class {
|
|
|
856
884
|
this.traceDecisions.delete(traceId);
|
|
857
885
|
known.seenAt = now;
|
|
858
886
|
this.traceDecisions.set(traceId, known);
|
|
859
|
-
return known.
|
|
887
|
+
return this._sampleByRate(level, known.fraction);
|
|
860
888
|
}
|
|
861
|
-
const
|
|
889
|
+
const fraction = traceFraction(traceId);
|
|
862
890
|
this.traceDecisions.delete(traceId);
|
|
863
891
|
this.traceDecisions.set(traceId, {
|
|
864
|
-
|
|
892
|
+
fraction,
|
|
865
893
|
firstAt: now,
|
|
866
894
|
seenAt: now
|
|
867
895
|
});
|
|
@@ -869,7 +897,7 @@ var Sampler = class {
|
|
|
869
897
|
const oldest = this.traceDecisions.keys().next().value;
|
|
870
898
|
if (oldest !== void 0) this.traceDecisions.delete(oldest);
|
|
871
899
|
}
|
|
872
|
-
return
|
|
900
|
+
return this._sampleByRate(level, fraction);
|
|
873
901
|
}
|
|
874
902
|
_consumeToken() {
|
|
875
903
|
const now = Date.now();
|
|
@@ -946,7 +974,8 @@ function deregisterFromShutdown(logger) {
|
|
|
946
974
|
* the process exits. Idempotent — the first call wins and later calls with
|
|
947
975
|
* conflicting options print a warning. The process is ended with 128 + signal
|
|
948
976
|
* number only when logixia's handler is the sole listener for that signal (see
|
|
949
|
-
* `exit`); otherwise it
|
|
977
|
+
* `exit`), closing the loggers first; otherwise it only flushes them and leaves
|
|
978
|
+
* shutdown to the application.
|
|
950
979
|
* Loggers are also flushed (not closed) on `beforeExit`.
|
|
951
980
|
*
|
|
952
981
|
* @example
|
|
@@ -973,7 +1002,8 @@ function flushOnExit(options = {}) {
|
|
|
973
1002
|
}, timeout).unref() : void 0;
|
|
974
1003
|
try {
|
|
975
1004
|
if (beforeFlush) await beforeFlush();
|
|
976
|
-
|
|
1005
|
+
const ownsExit = shouldExit(signal);
|
|
1006
|
+
await Promise.allSettled([...registry].map((logger) => ownsExit || !logger.flush ? logger.close() : logger.flush()));
|
|
977
1007
|
if (afterFlush) await afterFlush();
|
|
978
1008
|
} catch (err) {
|
|
979
1009
|
process.stderr.write(`[logixia] Shutdown hook failed: ${String(err)}\n`);
|
|
@@ -1094,6 +1124,7 @@ function nowIso() {
|
|
|
1094
1124
|
return _tsCacheStr;
|
|
1095
1125
|
}
|
|
1096
1126
|
const RESOLVED = Promise.resolve();
|
|
1127
|
+
const UNSERIALIZABLE = "[Unserializable]";
|
|
1097
1128
|
const JSON_STRING_FIELDS = [
|
|
1098
1129
|
"timestamp",
|
|
1099
1130
|
"level",
|
|
@@ -1130,6 +1161,21 @@ function toContextLabel(context) {
|
|
|
1130
1161
|
if (context === void 0 || context === null) return "";
|
|
1131
1162
|
return typeof context === "string" ? context : safeToString(context);
|
|
1132
1163
|
}
|
|
1164
|
+
function serializeErrorSafely(error) {
|
|
1165
|
+
try {
|
|
1166
|
+
return serializeError(error);
|
|
1167
|
+
} catch (cause) {
|
|
1168
|
+
internalError("Error serialization failed", cause);
|
|
1169
|
+
return UNSERIALIZABLE;
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
function errorMessageSafely(error) {
|
|
1173
|
+
try {
|
|
1174
|
+
return safeToString(error.message);
|
|
1175
|
+
} catch {
|
|
1176
|
+
return UNSERIALIZABLE;
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1133
1179
|
function namespacePatternToRegex(pattern) {
|
|
1134
1180
|
const escaped = pattern.split(".").map((s) => s === "*" ? "[^.]+" : s.replace(/[$()*+.?[\\\]^{|}]/g, "\\$&")).join("\\.");
|
|
1135
1181
|
return new RegExp(`^${escaped}$`);
|
|
@@ -1345,19 +1391,25 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1345
1391
|
});
|
|
1346
1392
|
}
|
|
1347
1393
|
createCustomLevelMethods() {
|
|
1348
|
-
var _this$config$levelOpt3
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1394
|
+
var _this$config$levelOpt3;
|
|
1395
|
+
const levels = (_this$config$levelOpt3 = this.config.levelOptions) === null || _this$config$levelOpt3 === void 0 ? void 0 : _this$config$levelOpt3.levels;
|
|
1396
|
+
warnOnReservedLevelNames(levels);
|
|
1397
|
+
if (!levels) return;
|
|
1398
|
+
const self = this;
|
|
1399
|
+
const names = Object.keys(levels);
|
|
1400
|
+
const define = (method, levelName) => {
|
|
1401
|
+
if (!self[method]) self[method] = (message, data) => this.logLevel(levelName, message, data);
|
|
1402
|
+
};
|
|
1403
|
+
for (const levelName of names) define(levelName, levelName);
|
|
1404
|
+
for (const levelName of names) define(levelName.toLowerCase(), levelName);
|
|
1353
1405
|
}
|
|
1354
1406
|
/**
|
|
1355
1407
|
* Rebuild all hot-path caches after any config mutation or level change.
|
|
1356
1408
|
* Keeps the actual log() call free of allocations in the common case.
|
|
1357
1409
|
*/
|
|
1358
1410
|
_buildPerfCaches() {
|
|
1359
|
-
var _this$config$
|
|
1360
|
-
const customLevelEntries = Object.entries(((_this$config$
|
|
1411
|
+
var _this$config$levelOpt4, _this$config$format, _this$config$redact$p, _this$config$redact$p2;
|
|
1412
|
+
const customLevelEntries = Object.entries(((_this$config$levelOpt4 = this.config.levelOptions) === null || _this$config$levelOpt4 === void 0 ? void 0 : _this$config$levelOpt4.levels) ?? {});
|
|
1361
1413
|
this._levelValues = new Map([
|
|
1362
1414
|
[LogLevel.ERROR, 0],
|
|
1363
1415
|
[LogLevel.WARN, 1],
|
|
@@ -1426,8 +1478,8 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1426
1478
|
for (const [lvl] of this._levelValues) {
|
|
1427
1479
|
const upper = lvl.toUpperCase();
|
|
1428
1480
|
if (colorize && this._fieldCache.get("level") !== false) {
|
|
1429
|
-
var _this$config$
|
|
1430
|
-
let colorName = (_this$config$
|
|
1481
|
+
var _this$config$levelOpt5;
|
|
1482
|
+
let colorName = (_this$config$levelOpt5 = this.config.levelOptions) === null || _this$config$levelOpt5 === void 0 || (_this$config$levelOpt5 = _this$config$levelOpt5.colors) === null || _this$config$levelOpt5 === void 0 ? void 0 : _this$config$levelOpt5[lvl];
|
|
1431
1483
|
if (!colorName) {
|
|
1432
1484
|
if (_BUILTIN_LEVELS.has(lvl)) colorName = "white";
|
|
1433
1485
|
else {
|
|
@@ -1452,9 +1504,9 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1452
1504
|
*/
|
|
1453
1505
|
error(messageOrError, data) {
|
|
1454
1506
|
try {
|
|
1455
|
-
return isError(messageOrError) ? this._run("error", messageOrError
|
|
1507
|
+
return isError(messageOrError) ? this._run("error", errorMessageSafely(messageOrError), {
|
|
1456
1508
|
...data,
|
|
1457
|
-
error:
|
|
1509
|
+
error: serializeErrorSafely(messageOrError)
|
|
1458
1510
|
}) : this._run("error", messageOrError, data);
|
|
1459
1511
|
} catch (error) {
|
|
1460
1512
|
return Promise.reject(error);
|
|
@@ -1574,8 +1626,8 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1574
1626
|
* else a `NODE_ENV` default (`debug` in development, `warn` in test), else `info`.
|
|
1575
1627
|
*/
|
|
1576
1628
|
getLevel() {
|
|
1577
|
-
var _this$config$
|
|
1578
|
-
return ((_this$config$
|
|
1629
|
+
var _this$config$levelOpt6;
|
|
1630
|
+
return ((_this$config$levelOpt6 = this.config.levelOptions) === null || _this$config$levelOpt6 === void 0 ? void 0 : _this$config$levelOpt6.level) ?? LogLevel.INFO;
|
|
1579
1631
|
}
|
|
1580
1632
|
_validLevelList() {
|
|
1581
1633
|
return [...this._levelValues.keys()].join(", ");
|
|
@@ -1639,6 +1691,7 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1639
1691
|
/** Set the context label (e.g. a class or module name) attached to every subsequent entry. */
|
|
1640
1692
|
setContext(context) {
|
|
1641
1693
|
this.context = typeof context === "string" ? context : safeToString(context);
|
|
1694
|
+
this._syncNamespaceLevels();
|
|
1642
1695
|
}
|
|
1643
1696
|
/** Return the current context label, or `undefined` if none is set. */
|
|
1644
1697
|
getContext() {
|
|
@@ -1807,7 +1860,7 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1807
1860
|
const config = this.config;
|
|
1808
1861
|
if (config.silent) return;
|
|
1809
1862
|
if (!this.shouldLog(level)) return;
|
|
1810
|
-
const data = rawData instanceof Error ? { error:
|
|
1863
|
+
const data = rawData instanceof Error ? { error: serializeErrorSafely(rawData) } : rawData;
|
|
1811
1864
|
const alsContext = LogixiaContext.get();
|
|
1812
1865
|
let activeTraceId;
|
|
1813
1866
|
if (config.traceId) {
|
|
@@ -2034,13 +2087,7 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
2034
2087
|
* ```
|
|
2035
2088
|
*/
|
|
2036
2089
|
function createLogger(config, context) {
|
|
2037
|
-
|
|
2038
|
-
const logger = new LogixiaLogger(config, context);
|
|
2039
|
-
const mutableLogger = logger;
|
|
2040
|
-
if ((_config$levelOptions3 = config.levelOptions) === null || _config$levelOptions3 === void 0 ? void 0 : _config$levelOptions3.levels) {
|
|
2041
|
-
for (const levelName of Object.keys(config.levelOptions.levels)) if (!mutableLogger[levelName]) mutableLogger[levelName] = (message, data) => logger.logLevel(levelName, message, data);
|
|
2042
|
-
}
|
|
2043
|
-
return logger;
|
|
2090
|
+
return new LogixiaLogger(config, context);
|
|
2044
2091
|
}
|
|
2045
2092
|
// src/exceptions/exception.ts
|
|
2046
2093
|
var LogixiaException = class extends Error {
|
|
@@ -2283,4 +2330,4 @@ var ErrorResponseBuilder = class {
|
|
|
2283
2330
|
};
|
|
2284
2331
|
export { DEFAULT_LOG_COLORS as C, DEFAULT_CONFIG as S, LogLevel as T, serializeError as _, isLogixiaException as a, globalPluginRegistry as b, _shutdownRegistrySize as c, registerForShutdown as d, resetShutdownHandlers as f, normalizeError as g, isError as h, LogixiaException as i, deregisterFromShutdown as l, redactObject as m, generateRequestId as n, LogixiaLogger as o, applyRedaction as p, generateTraceId as r, createLogger as s, ErrorResponseBuilder as t, flushOnExit as u, serializeNestedErrors as v, DEFAULT_LOG_LEVELS as w, usePlugin as x, PluginRegistry as y };
|
|
2285
2332
|
|
|
2286
|
-
//# sourceMappingURL=builder-
|
|
2333
|
+
//# sourceMappingURL=builder-CA_dokb4.mjs.map
|