logixia 1.13.3 → 2.0.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 +72 -16
- package/dist/{azure-monitor.transport-BDFO4F-i.d.ts → azure-monitor.transport-Cn_3Usvu.d.ts} +2 -2
- package/dist/{azure-monitor.transport-BDFO4F-i.d.ts.map → azure-monitor.transport-Cn_3Usvu.d.ts.map} +1 -1
- package/dist/{azure-monitor.transport-D5wQEH04.d.mts → azure-monitor.transport-D7Da4RAb.d.mts} +2 -2
- package/dist/{azure-monitor.transport-D5wQEH04.d.mts.map → azure-monitor.transport-D7Da4RAb.d.mts.map} +1 -1
- package/dist/azure.d.mts +2 -2
- package/dist/azure.d.ts +2 -2
- package/dist/browser.d.mts +9 -0
- package/dist/browser.d.mts.map +1 -1
- package/dist/browser.d.ts +9 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +43 -12
- package/dist/browser.js.map +1 -1
- package/dist/browser.mjs +43 -12
- package/dist/browser.mjs.map +1 -1
- package/dist/{nestjs-extras-ImbuDhs1.mjs → builder-0gEzRopq.mjs} +77 -871
- package/dist/builder-0gEzRopq.mjs.map +1 -0
- package/dist/{nestjs-extras-DnJ6vrIC.js → builder-D44QktIo.js} +81 -943
- package/dist/builder-D44QktIo.js.map +1 -0
- package/dist/cli/index.js +32 -13
- package/dist/cloudwatch.d.mts +2 -2
- package/dist/cloudwatch.d.ts +2 -2
- package/dist/{cloudwatch.transport-B00st6Xv.d.ts → cloudwatch.transport-DsEq633o.d.ts} +2 -2
- package/dist/{cloudwatch.transport-B00st6Xv.d.ts.map → cloudwatch.transport-DsEq633o.d.ts.map} +1 -1
- package/dist/{cloudwatch.transport-Blc7Gtxt.d.mts → cloudwatch.transport-UlyZFWMn.d.mts} +2 -2
- package/dist/{cloudwatch.transport-Blc7Gtxt.d.mts.map → cloudwatch.transport-UlyZFWMn.d.mts.map} +1 -1
- package/dist/gcp.d.mts +2 -2
- package/dist/gcp.d.ts +2 -2
- package/dist/{gcp.transport-m4fVw0b1.d.ts → gcp.transport-B7oc97sG.d.ts} +2 -2
- package/dist/{gcp.transport-m4fVw0b1.d.ts.map → gcp.transport-B7oc97sG.d.ts.map} +1 -1
- package/dist/{gcp.transport-zzNyIoih.d.mts → gcp.transport-GrJurKo8.d.mts} +2 -2
- package/dist/{gcp.transport-zzNyIoih.d.mts.map → gcp.transport-GrJurKo8.d.mts.map} +1 -1
- package/dist/{index-BPwEisy4.d.mts → index-3mw5gaCw.d.mts} +2 -2
- package/dist/{index-BPwEisy4.d.mts.map → index-3mw5gaCw.d.mts.map} +1 -1
- package/dist/{index-nZEeCr3X.d.ts → index-DhIoploR.d.ts} +2 -2
- package/dist/{index-nZEeCr3X.d.ts.map → index-DhIoploR.d.ts.map} +1 -1
- package/dist/index.d.mts +44 -47
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +44 -47
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -126
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -58
- package/dist/index.mjs.map +1 -1
- package/dist/logitron-logger-BFDSO8Io.d.mts +257 -0
- package/dist/logitron-logger-BFDSO8Io.d.mts.map +1 -0
- package/dist/logitron-logger-UVeN-mQm.d.ts +257 -0
- package/dist/logitron-logger-UVeN-mQm.d.ts.map +1 -0
- package/dist/middleware.d.mts +2 -2
- package/dist/middleware.d.ts +2 -2
- package/dist/nest.d.mts +481 -6
- package/dist/nest.d.mts.map +1 -1
- package/dist/nest.d.ts +481 -6
- package/dist/nest.d.ts.map +1 -1
- package/dist/nest.js +877 -15
- package/dist/nest.js.map +1 -0
- package/dist/nest.mjs +861 -6
- package/dist/nest.mjs.map +1 -0
- package/dist/{search-DjXSn6v5.mjs → search-BFbu_oVn.mjs} +13 -3
- package/dist/{search-DjXSn6v5.mjs.map → search-BFbu_oVn.mjs.map} +1 -1
- package/dist/{search-B0MH1SJJ.js → search-C4V0OMEn.js} +13 -3
- package/dist/{search-B0MH1SJJ.js.map → search-C4V0OMEn.js.map} +1 -1
- package/dist/{search-CHUZPl0h.d.ts → search-CNh9uVwR.d.ts} +2 -2
- package/dist/search-CNh9uVwR.d.ts.map +1 -0
- package/dist/{search-BfBzDIT9.d.mts → search-DXANsQ2n.d.mts} +2 -2
- package/dist/{search-CHUZPl0h.d.ts.map → search-DXANsQ2n.d.mts.map} +1 -1
- package/dist/search.d.mts +3 -3
- package/dist/search.d.ts +3 -3
- package/dist/search.js +1 -1
- package/dist/search.mjs +1 -1
- package/dist/slack.transport-BZzoXDPn.d.mts +112 -0
- package/dist/slack.transport-BZzoXDPn.d.mts.map +1 -0
- package/dist/slack.transport-BfJRouB2.js +654 -0
- package/dist/slack.transport-BfJRouB2.js.map +1 -0
- package/dist/slack.transport-Bzw7sucI.mjs +643 -0
- package/dist/slack.transport-Bzw7sucI.mjs.map +1 -0
- package/dist/slack.transport-CXjQYOes.d.ts +112 -0
- package/dist/slack.transport-CXjQYOes.d.ts.map +1 -0
- package/dist/testing.d.mts +2 -2
- package/dist/testing.d.ts +2 -2
- package/dist/{transport.manager-CpdVHEGP.mjs → transport.manager-BiuCAJd2.mjs} +171 -84
- package/dist/transport.manager-BiuCAJd2.mjs.map +1 -0
- package/dist/{transport.manager-Crau3Rle.js → transport.manager-CXbKKdVE.js} +176 -83
- package/dist/transport.manager-CXbKKdVE.js.map +1 -0
- package/dist/{transport.types-CtNr3D7S.d.mts → transport.types-BMnurPcc.d.mts} +5 -2
- package/dist/transport.types-BMnurPcc.d.mts.map +1 -0
- package/dist/{transport.types-DqVLZTyf.d.ts → transport.types-CGoHpWQR.d.ts} +5 -2
- package/dist/transport.types-CGoHpWQR.d.ts.map +1 -0
- package/dist/transports.d.mts +18 -13
- package/dist/transports.d.mts.map +1 -1
- package/dist/transports.d.ts +18 -13
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +5 -2
- package/dist/transports.mjs +4 -3
- package/dist/worker.d.mts +2 -2
- package/dist/worker.d.ts +2 -2
- package/dist/worker.js +1 -1
- package/dist/worker.mjs +1 -1
- package/dist/{worker.transport-JP8YHBuU.js → worker.transport-BdPxu3PN.js} +1 -1
- package/dist/{worker.transport-JP8YHBuU.js.map → worker.transport-BdPxu3PN.js.map} +1 -1
- package/dist/{worker.transport-Bj-i0P9V.d.ts → worker.transport-CdzSZJmw.d.ts} +2 -2
- package/dist/{worker.transport-Bj-i0P9V.d.ts.map → worker.transport-CdzSZJmw.d.ts.map} +1 -1
- package/dist/{worker.transport-Bgv9heDI.d.mts → worker.transport-JvGPog3C.d.mts} +2 -2
- package/dist/{worker.transport-Bgv9heDI.d.mts.map → worker.transport-JvGPog3C.d.mts.map} +1 -1
- package/dist/{worker.transport-otwhJ_Et.mjs → worker.transport-lPxO2MVL.mjs} +1 -1
- package/dist/{worker.transport-otwhJ_Et.mjs.map → worker.transport-lPxO2MVL.mjs.map} +1 -1
- package/package.json +18 -9
- package/dist/nestjs-extras-DnJ6vrIC.js.map +0 -1
- package/dist/nestjs-extras-ImbuDhs1.mjs.map +0 -1
- package/dist/nestjs-extras-OkC796py.d.mts +0 -725
- package/dist/nestjs-extras-OkC796py.d.mts.map +0 -1
- package/dist/nestjs-extras-mKrHE9S6.d.ts +0 -725
- package/dist/nestjs-extras-mKrHE9S6.d.ts.map +0 -1
- package/dist/search-BfBzDIT9.d.mts.map +0 -1
- package/dist/transport.manager-CpdVHEGP.mjs.map +0 -1
- package/dist/transport.manager-Crau3Rle.js.map +0 -1
- package/dist/transport.types-CtNr3D7S.d.mts.map +0 -1
- package/dist/transport.types-DqVLZTyf.d.ts.map +0 -1
|
@@ -9,12 +9,12 @@ let node_path = require("node:path");
|
|
|
9
9
|
node_path = require_chunk.__toESM(node_path);
|
|
10
10
|
let node_events = require("node:events");
|
|
11
11
|
node_events = require_chunk.__toESM(node_events);
|
|
12
|
-
let node_stream_promises = require("node:stream/promises");
|
|
13
|
-
node_stream_promises = require_chunk.__toESM(node_stream_promises);
|
|
14
12
|
let node_util = require("node:util");
|
|
15
13
|
node_util = require_chunk.__toESM(node_util);
|
|
16
14
|
let node_zlib = require("node:zlib");
|
|
17
15
|
node_zlib = require_chunk.__toESM(node_zlib);
|
|
16
|
+
let node_stream_promises = require("node:stream/promises");
|
|
17
|
+
node_stream_promises = require_chunk.__toESM(node_stream_promises);
|
|
18
18
|
|
|
19
19
|
//#region src/utils/sanitize.utils.ts
|
|
20
20
|
/**
|
|
@@ -772,6 +772,17 @@ var DatabaseTransport = class {
|
|
|
772
772
|
|
|
773
773
|
//#endregion
|
|
774
774
|
//#region src/transports/analytics.transport.ts
|
|
775
|
+
/**
|
|
776
|
+
* Thrown by sendBatch() when part of a batch was already delivered. drain()
|
|
777
|
+
* requeues only `unsent`, so delivered entries are not sent twice.
|
|
778
|
+
*/
|
|
779
|
+
var PartialBatchError = class extends Error {
|
|
780
|
+
constructor(message, unsent, options) {
|
|
781
|
+
super(message, options);
|
|
782
|
+
this.unsent = unsent;
|
|
783
|
+
this.name = "PartialBatchError";
|
|
784
|
+
}
|
|
785
|
+
};
|
|
775
786
|
var AnalyticsTransport = class {
|
|
776
787
|
constructor(name, config) {
|
|
777
788
|
this.batch = [];
|
|
@@ -832,7 +843,7 @@ var AnalyticsTransport = class {
|
|
|
832
843
|
await this.sendBatch(entriesToSend);
|
|
833
844
|
} catch (error) {
|
|
834
845
|
require_internal_log.internalError(`Analytics transport ${this.name} flush failed`, error);
|
|
835
|
-
this.batch.unshift(...entriesToSend);
|
|
846
|
+
this.batch.unshift(...error instanceof PartialBatchError ? error.unsent : entriesToSend);
|
|
836
847
|
this.cap.enforce(this.batch);
|
|
837
848
|
return;
|
|
838
849
|
}
|
|
@@ -895,8 +906,71 @@ var AnalyticsTransport = class {
|
|
|
895
906
|
|
|
896
907
|
//#endregion
|
|
897
908
|
//#region src/transports/datadog.transport.ts
|
|
909
|
+
const gzipAsync = (0, node_util.promisify)(node_zlib.gzip);
|
|
910
|
+
const MAX_LOGS_PER_REQUEST = 1e3;
|
|
911
|
+
const MAX_LOGS_PAYLOAD_BYTES = 5e6;
|
|
912
|
+
const MAX_LOG_BYTES = 1e6;
|
|
913
|
+
const MAX_TRUNCATED_MESSAGE_CHARS = 15e4;
|
|
914
|
+
const TRUNCATED_LOG_KEYS = [
|
|
915
|
+
"ddsource",
|
|
916
|
+
"ddtags",
|
|
917
|
+
"hostname",
|
|
918
|
+
"service",
|
|
919
|
+
"status",
|
|
920
|
+
"timestamp",
|
|
921
|
+
"level",
|
|
922
|
+
"context",
|
|
923
|
+
"traceId",
|
|
924
|
+
"appName",
|
|
925
|
+
"environment",
|
|
926
|
+
"env",
|
|
927
|
+
"version",
|
|
928
|
+
"logger",
|
|
929
|
+
"dd.trace_id",
|
|
930
|
+
"dd.span_id"
|
|
931
|
+
];
|
|
932
|
+
const STATUS_MAP = {
|
|
933
|
+
fatal: "critical",
|
|
934
|
+
critical: "critical",
|
|
935
|
+
error: "error",
|
|
936
|
+
warn: "warn",
|
|
937
|
+
warning: "warn",
|
|
938
|
+
info: "info",
|
|
939
|
+
debug: "debug",
|
|
940
|
+
trace: "debug",
|
|
941
|
+
verbose: "debug"
|
|
942
|
+
};
|
|
943
|
+
const MAX_UINT64 = (1n << 64n) - 1n;
|
|
944
|
+
const DASHED_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
945
|
+
const HEX = /^[0-9a-f]+$/i;
|
|
946
|
+
const DIGITS = /^\d+$/;
|
|
947
|
+
/**
|
|
948
|
+
* Datadog correlates on a decimal 64-bit id. Accepts:
|
|
949
|
+
* - a dashed UUID (logixia's default trace id): dashes stripped, then 32-hex;
|
|
950
|
+
* - 32 hex chars (W3C trace id) or 16 hex chars containing a-f: low 64 bits as decimal;
|
|
951
|
+
* - an all-digit string: already decimal (dd-trace's native format), passed through.
|
|
952
|
+
* An all-digit string is ambiguous when it is 16 or 32 long: 32 is read as hex (a
|
|
953
|
+
* decimal id has at most 20 digits), 16 is read as decimal.
|
|
954
|
+
* Anything else yields the raw string for trace ids (`passthrough`) and nothing for span ids.
|
|
955
|
+
*/
|
|
956
|
+
function toDatadogId(id, passthrough) {
|
|
957
|
+
if (typeof id !== "string" || id === "") return void 0;
|
|
958
|
+
const fallback = passthrough ? id : void 0;
|
|
959
|
+
const compact = DASHED_UUID.test(id) ? id.replaceAll("-", "") : id;
|
|
960
|
+
const isHexId = HEX.test(compact) && (compact.length === 32 || compact.length === 16);
|
|
961
|
+
if (DIGITS.test(compact) && compact.length !== 32) {
|
|
962
|
+
const value = BigInt(compact);
|
|
963
|
+
return value <= MAX_UINT64 ? value.toString() : fallback;
|
|
964
|
+
}
|
|
965
|
+
if (isHexId) return BigInt(`0x${compact.slice(-16)}`).toString();
|
|
966
|
+
return fallback;
|
|
967
|
+
}
|
|
968
|
+
/** Datadog tags: no commas or whitespace, lowercase, at most 200 chars. */
|
|
969
|
+
function tag(key, value) {
|
|
970
|
+
return `${key}:${value}`.replaceAll(/[\s,]+/g, "_").toLowerCase().slice(0, 200);
|
|
971
|
+
}
|
|
898
972
|
/**
|
|
899
|
-
* Sends log entries and metrics to Datadog via the Logs and Metrics HTTP APIs.
|
|
973
|
+
* Sends log entries and metrics to Datadog via the Logs (v2) and Metrics HTTP APIs.
|
|
900
974
|
*
|
|
901
975
|
* The API key is transmitted via the `DD-API-KEY` request header — never in the URL.
|
|
902
976
|
*
|
|
@@ -922,29 +996,68 @@ var DataDogTransport = class extends AnalyticsTransport {
|
|
|
922
996
|
}
|
|
923
997
|
}
|
|
924
998
|
async sendEntry(entry) {
|
|
925
|
-
|
|
926
|
-
if (this.datadogConfig.enableLogs !== false) promises.push(this.sendLog(entry));
|
|
927
|
-
if (this.datadogConfig.enableMetrics) promises.push(this.sendMetric(entry));
|
|
928
|
-
if (this.datadogConfig.enableTraces && entry.traceId) promises.push(this.sendTrace(entry));
|
|
929
|
-
await Promise.all(promises);
|
|
999
|
+
await this.sendBatch([entry]);
|
|
930
1000
|
}
|
|
1001
|
+
/**
|
|
1002
|
+
* Logs go first, chunk by chunk; metrics follow once every log chunk is out.
|
|
1003
|
+
* A failure part-way throws PartialBatchError naming only the entries that were
|
|
1004
|
+
* not delivered, so a retry never re-posts a chunk Datadog already accepted.
|
|
1005
|
+
*/
|
|
931
1006
|
async sendBatch(entries) {
|
|
932
|
-
|
|
933
|
-
if (this.datadogConfig.
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
1007
|
+
if (this.datadogConfig.enableLogs !== false) await this.sendLogBatch(entries);
|
|
1008
|
+
if (this.datadogConfig.enableMetrics) try {
|
|
1009
|
+
await this.sendMetricBatch(entries);
|
|
1010
|
+
} catch (error) {
|
|
1011
|
+
if (this.datadogConfig.enableLogs === false) throw error;
|
|
1012
|
+
throw new PartialBatchError(error.message, [], { cause: error });
|
|
938
1013
|
}
|
|
939
|
-
await Promise.all(promises);
|
|
940
1014
|
}
|
|
941
1015
|
async cleanup() {}
|
|
942
|
-
async sendLog(entry) {
|
|
943
|
-
await this.sendLogBatch([entry]);
|
|
944
|
-
}
|
|
945
1016
|
async sendLogBatch(entries) {
|
|
946
|
-
const
|
|
947
|
-
|
|
1017
|
+
const items = entries.map((entry) => ({
|
|
1018
|
+
entry,
|
|
1019
|
+
json: this.serializeLog(entry)
|
|
1020
|
+
}));
|
|
1021
|
+
const chunks = this.chunkLogs(items);
|
|
1022
|
+
for (let i = 0; i < chunks.length; i += 1) {
|
|
1023
|
+
const chunk$1 = chunks[i];
|
|
1024
|
+
try {
|
|
1025
|
+
await this.makeLogsRequest("/api/v2/logs", `[${chunk$1.map((item) => item.json).join(",")}]`);
|
|
1026
|
+
} catch (error) {
|
|
1027
|
+
if (i === 0) throw error;
|
|
1028
|
+
const unsent = chunks.slice(i).flatMap((c) => c.map((item) => item.entry));
|
|
1029
|
+
throw new PartialBatchError(error.message, unsent, { cause: error });
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
/** Splits into requests of at most 1000 entries and about 5MB of JSON. */
|
|
1034
|
+
chunkLogs(items) {
|
|
1035
|
+
const chunks = [];
|
|
1036
|
+
let current = [];
|
|
1037
|
+
let currentBytes = 2;
|
|
1038
|
+
for (const item of items) {
|
|
1039
|
+
const bytes = Buffer.byteLength(item.json) + 1;
|
|
1040
|
+
if (current.length > 0 && (current.length >= MAX_LOGS_PER_REQUEST || currentBytes + bytes > MAX_LOGS_PAYLOAD_BYTES)) {
|
|
1041
|
+
chunks.push(current);
|
|
1042
|
+
current = [];
|
|
1043
|
+
currentBytes = 2;
|
|
1044
|
+
}
|
|
1045
|
+
current.push(item);
|
|
1046
|
+
currentBytes += bytes;
|
|
1047
|
+
}
|
|
1048
|
+
if (current.length > 0) chunks.push(current);
|
|
1049
|
+
return chunks;
|
|
1050
|
+
}
|
|
1051
|
+
/** Serializes once. A log over 1MB keeps its identity and correlation fields but loses its attributes and most of its message. */
|
|
1052
|
+
serializeLog(entry) {
|
|
1053
|
+
const log = this.transformToDataDogLog(entry);
|
|
1054
|
+
const json = require_safe_stringify.stringifyForLog(log);
|
|
1055
|
+
if (Buffer.byteLength(json) <= MAX_LOG_BYTES) return json;
|
|
1056
|
+
const kept = {};
|
|
1057
|
+
for (const key of TRUNCATED_LOG_KEYS) if (log[key] !== void 0) kept[key] = log[key];
|
|
1058
|
+
kept["message"] = String(log["message"]).slice(0, MAX_TRUNCATED_MESSAGE_CHARS);
|
|
1059
|
+
kept["truncated"] = true;
|
|
1060
|
+
return require_safe_stringify.stringifyForLog(kept);
|
|
948
1061
|
}
|
|
949
1062
|
async sendMetric(entry) {
|
|
950
1063
|
await this.sendMetricBatch([entry]);
|
|
@@ -953,29 +1066,35 @@ var DataDogTransport = class extends AnalyticsTransport {
|
|
|
953
1066
|
const payload = { series: entries.map((entry) => this.transformToDataDogMetric(entry)) };
|
|
954
1067
|
await this.makeMetricsRequest("/api/v1/series", payload);
|
|
955
1068
|
}
|
|
956
|
-
async sendTrace(entry) {
|
|
957
|
-
await this.sendLog(entry);
|
|
958
|
-
}
|
|
959
|
-
async sendTraceBatch(entries) {
|
|
960
|
-
await this.sendLogBatch(entries);
|
|
961
|
-
}
|
|
962
1069
|
transformToDataDogLog(entry) {
|
|
1070
|
+
var _entry$data, _entry$data2;
|
|
1071
|
+
const transformed = this.transformEntry(entry);
|
|
1072
|
+
const service = this.datadogConfig.service || "logixia";
|
|
1073
|
+
const env = this.datadogConfig.env || "production";
|
|
1074
|
+
const version = this.datadogConfig.version;
|
|
1075
|
+
const tags = [
|
|
1076
|
+
tag("env", env),
|
|
1077
|
+
tag("service", service),
|
|
1078
|
+
...version ? [tag("version", version)] : []
|
|
1079
|
+
];
|
|
1080
|
+
const spanId = toDatadogId(((_entry$data = entry.data) === null || _entry$data === void 0 ? void 0 : _entry$data["spanId"]) ?? ((_entry$data2 = entry.data) === null || _entry$data2 === void 0 ? void 0 : _entry$data2["span_id"]), false);
|
|
1081
|
+
const traceId = toDatadogId(entry.traceId, true);
|
|
963
1082
|
return {
|
|
964
|
-
...
|
|
965
|
-
"
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
level: this.mapLogLevel(entry.level),
|
|
1083
|
+
...transformed,
|
|
1084
|
+
ddsource: "nodejs",
|
|
1085
|
+
ddtags: tags.join(","),
|
|
1086
|
+
hostname: this.getHostname(),
|
|
1087
|
+
service,
|
|
1088
|
+
status: this.mapLogLevel(entry.level),
|
|
971
1089
|
message: entry.message,
|
|
972
|
-
|
|
973
|
-
version
|
|
974
|
-
env: this.datadogConfig.env || "production",
|
|
1090
|
+
env,
|
|
1091
|
+
version,
|
|
975
1092
|
logger: {
|
|
976
1093
|
name: "logixia",
|
|
977
1094
|
thread_name: "main"
|
|
978
|
-
}
|
|
1095
|
+
},
|
|
1096
|
+
...traceId && { "dd.trace_id": traceId },
|
|
1097
|
+
...traceId && spanId && { "dd.span_id": spanId }
|
|
979
1098
|
};
|
|
980
1099
|
}
|
|
981
1100
|
reservedKeys() {
|
|
@@ -1001,58 +1120,29 @@ var DataDogTransport = class extends AnalyticsTransport {
|
|
|
1001
1120
|
type: "count",
|
|
1002
1121
|
host: this.getHostname(),
|
|
1003
1122
|
tags: [
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
...entry.context ? [
|
|
1008
|
-
...entry.appName ? [
|
|
1123
|
+
tag("level", entry.level),
|
|
1124
|
+
tag("service", this.datadogConfig.service || "logixia"),
|
|
1125
|
+
tag("env", this.datadogConfig.env || "production"),
|
|
1126
|
+
...entry.context ? [tag("context", entry.context)] : [],
|
|
1127
|
+
...entry.appName ? [tag("app", entry.appName)] : []
|
|
1009
1128
|
]
|
|
1010
1129
|
};
|
|
1011
1130
|
}
|
|
1012
|
-
transformToDataDogTrace(entry) {
|
|
1013
|
-
return {
|
|
1014
|
-
trace_id: entry.traceId,
|
|
1015
|
-
span_id: this.generateSpanId(),
|
|
1016
|
-
parent_id: null,
|
|
1017
|
-
name: "log.entry",
|
|
1018
|
-
service: this.datadogConfig.service || "logixia",
|
|
1019
|
-
resource: entry.message,
|
|
1020
|
-
type: "log",
|
|
1021
|
-
start: entry.timestamp.getTime() * 1e6,
|
|
1022
|
-
duration: 1e6,
|
|
1023
|
-
meta: {
|
|
1024
|
-
"log.level": entry.level,
|
|
1025
|
-
"log.message": entry.message,
|
|
1026
|
-
...entry.context && { "log.context": entry.context },
|
|
1027
|
-
...entry.data && Object.keys(entry.data).reduce((acc, key) => {
|
|
1028
|
-
acc[`log.${key}`] = String(entry.data[key]);
|
|
1029
|
-
return acc;
|
|
1030
|
-
}, {})
|
|
1031
|
-
},
|
|
1032
|
-
metrics: { _sampling_priority_v1: 1 }
|
|
1033
|
-
};
|
|
1034
|
-
}
|
|
1035
1131
|
mapLogLevel(level) {
|
|
1036
|
-
return
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
warning: "warn",
|
|
1040
|
-
info: "info",
|
|
1041
|
-
debug: "debug",
|
|
1042
|
-
trace: "trace",
|
|
1043
|
-
verbose: "debug"
|
|
1044
|
-
}[level.toLowerCase()] || "info";
|
|
1045
|
-
}
|
|
1046
|
-
async makeLogsRequest(endpoint, data) {
|
|
1132
|
+
return STATUS_MAP[level.toLowerCase()] || "info";
|
|
1133
|
+
}
|
|
1134
|
+
async makeLogsRequest(endpoint, json) {
|
|
1047
1135
|
const url = `${this.logsUrl}${endpoint}`;
|
|
1048
1136
|
try {
|
|
1137
|
+
const compress = this.datadogConfig.compress === true;
|
|
1049
1138
|
const response = await fetch(url, {
|
|
1050
1139
|
method: "POST",
|
|
1051
1140
|
headers: {
|
|
1052
1141
|
"Content-Type": "application/json",
|
|
1053
|
-
"DD-API-KEY": this.datadogConfig.apiKey
|
|
1142
|
+
"DD-API-KEY": this.datadogConfig.apiKey,
|
|
1143
|
+
...compress && { "Content-Encoding": "gzip" }
|
|
1054
1144
|
},
|
|
1055
|
-
body:
|
|
1145
|
+
body: compress ? await gzipAsync(json) : json
|
|
1056
1146
|
});
|
|
1057
1147
|
if (!response.ok) throw new Error(`DataDog Logs API error: ${response.status} ${response.statusText}`);
|
|
1058
1148
|
} catch (error) {
|
|
@@ -1075,9 +1165,6 @@ var DataDogTransport = class extends AnalyticsTransport {
|
|
|
1075
1165
|
throw new Error(`Failed to send metrics to DataDog: ${error.message}`, { cause: error });
|
|
1076
1166
|
}
|
|
1077
1167
|
}
|
|
1078
|
-
generateSpanId() {
|
|
1079
|
-
return Math.floor(Math.random() * 0xffffffffffff).toString(16);
|
|
1080
|
-
}
|
|
1081
1168
|
getHostname() {
|
|
1082
1169
|
try {
|
|
1083
1170
|
return require("node:os").hostname();
|
|
@@ -2576,6 +2663,12 @@ Object.defineProperty(exports, 'AnalyticsTransport', {
|
|
|
2576
2663
|
return AnalyticsTransport;
|
|
2577
2664
|
}
|
|
2578
2665
|
});
|
|
2666
|
+
Object.defineProperty(exports, 'BufferCap', {
|
|
2667
|
+
enumerable: true,
|
|
2668
|
+
get: function () {
|
|
2669
|
+
return BufferCap;
|
|
2670
|
+
}
|
|
2671
|
+
});
|
|
2579
2672
|
Object.defineProperty(exports, 'ConsoleTransport', {
|
|
2580
2673
|
enumerable: true,
|
|
2581
2674
|
get: function () {
|
|
@@ -2630,4 +2723,4 @@ Object.defineProperty(exports, 'stripControlChars', {
|
|
|
2630
2723
|
return stripControlChars;
|
|
2631
2724
|
}
|
|
2632
2725
|
});
|
|
2633
|
-
//# sourceMappingURL=transport.manager-
|
|
2726
|
+
//# sourceMappingURL=transport.manager-CXbKKdVE.js.map
|