UNPKG

@loglayer/plugin-opentelemetry

Version:

OpenTelemetry plugin for LogLayer that adds trace context to logs.

1 lines 3.29 kB
{"version":3,"sources":["/home/runner/work/loglayer/loglayer/packages/plugins/opentelemetry/dist/index.cjs","../src/index.ts"],"names":[],"mappings":"AAAA;ACCA,yCAAmD;AAqB5C,SAAS,mBAAA,CAAoB,OAAA,EAAoC,CAAC,CAAA,EAAmB;AAC1F,EAAA,MAAM,aAAA,EAAe,MAAA,CAAO,iBAAA,GAAoB,UAAA;AAChD,EAAA,MAAM,YAAA,EAAc,MAAA,CAAO,gBAAA,GAAmB,SAAA;AAC9C,EAAA,MAAM,gBAAA,EAAkB,MAAA,CAAO,oBAAA,GAAuB,aAAA;AAEtD,EAAA,MAAM,gBAAA,EAAkB,CAAC,IAAA,EAAA,GAA0C;AACjE,IAAA,MAAM,KAAA,EAAO,UAAA,CAAM,OAAA,CAAQ,YAAA,CAAQ,MAAA,CAAO,CAAC,CAAA;AAC3C,IAAA,GAAA,CAAI,IAAA,EAAM;AACR,MAAA,MAAM,YAAA,EAAc,IAAA,CAAK,WAAA,CAAY,CAAA;AACrC,MAAA,GAAA,CAAI,qCAAA,WAA8B,CAAA,EAAG;AACnC,QAAA,MAAM,OAAA,EAAS;AAAA,UACb,CAAC,YAAY,CAAA,EAAG,WAAA,CAAY,OAAA;AAAA,UAC5B,CAAC,WAAW,CAAA,EAAG,WAAA,CAAY,MAAA;AAAA,UAC3B,CAAC,eAAe,CAAA,EAAG,CAAA,CAAA,EAAI,WAAA,CAAY,UAAA,CAAW,QAAA,CAAS,EAAE,CAAC,CAAA;AAAA,QAAA;AAG5D,QAAA;AACE,UAAA;AAAkB,YAAA;AACS,UAAA;AAE3B,UAAA;AACE,YAAA;AAAO,cAAA;AACF,cAAA;AACA,YAAA;AACL,UAAA;AAEF,UAAA;AAAO,QAAA;AAGT,QAAA;AACE,UAAA;AAAO,YAAA;AACF,YAAA;AACA,UAAA;AACL,QAAA;AAEF,QAAA;AAAO,MAAA;AACT,IAAA;AAEF,IAAA;AAAgB,EAAA;AAGlB,EAAA;AAAO,IAAA;AACM,IAAA;AACM,IAAA;AACkC,EAAA;AAEvD;ADvBA;AACA;AACA","file":"/home/runner/work/loglayer/loglayer/packages/plugins/opentelemetry/dist/index.cjs","sourcesContent":[null,"import type { LogLayerPlugin, LogLayerPluginParams } from \"@loglayer/plugin\";\nimport { context, isSpanContextValid, trace } from \"@opentelemetry/api\";\n\nexport interface OpenTelemetryPluginParams extends LogLayerPluginParams {\n /**\n * If specified, all trace fields will be nested under this key\n */\n traceFieldName?: string;\n /**\n * Field name for the trace ID. Defaults to 'trace_id'\n */\n traceIdFieldName?: string;\n /**\n * Field name for the span ID. Defaults to 'span_id'\n */\n spanIdFieldName?: string;\n /**\n * Field name for the trace flags. Defaults to 'trace_flags'\n */\n traceFlagsFieldName?: string;\n}\n\nexport function openTelemetryPlugin(config: OpenTelemetryPluginParams = {}): LogLayerPlugin {\n const traceIdField = config.traceIdFieldName || \"trace_id\";\n const spanIdField = config.spanIdFieldName || \"span_id\";\n const traceFlagsField = config.traceFlagsFieldName || \"trace_flags\";\n\n const addTraceContext = (data: Record<string, any> | undefined) => {\n const span = trace.getSpan(context.active());\n if (span) {\n const spanContext = span.spanContext();\n if (isSpanContextValid(spanContext)) {\n const fields = {\n [traceIdField]: spanContext.traceId,\n [spanIdField]: spanContext.spanId,\n [traceFlagsField]: `0${spanContext.traceFlags.toString(16)}`,\n };\n\n if (config.traceFieldName) {\n const traceData = {\n [config.traceFieldName]: fields,\n };\n if (data) {\n return {\n ...data,\n ...traceData,\n };\n }\n return traceData;\n }\n\n if (data) {\n return {\n ...data,\n ...fields,\n };\n }\n return fields;\n }\n }\n return data || {};\n };\n\n return {\n id: config.id,\n disabled: config.disabled,\n onBeforeDataOut: ({ data }) => addTraceContext(data),\n };\n}\n"]}