UNPKG

@loglayer/plugin-opentelemetry

Version:

OpenTelemetry plugin for LogLayer that adds trace context to logs.

44 lines (42 loc) 1.19 kB
import { context, isSpanContextValid, trace } from "@opentelemetry/api"; //#region src/index.ts function openTelemetryPlugin(config = {}) { const traceIdField = config.traceIdFieldName || "trace_id"; const spanIdField = config.spanIdFieldName || "span_id"; const traceFlagsField = config.traceFlagsFieldName || "trace_flags"; const addTraceContext = (data) => { const span = trace.getSpan(context.active()); if (span) { const spanContext = span.spanContext(); if (isSpanContextValid(spanContext)) { const fields = { [traceIdField]: spanContext.traceId, [spanIdField]: spanContext.spanId, [traceFlagsField]: `0${spanContext.traceFlags.toString(16)}` }; if (config.traceFieldName) { const traceData = { [config.traceFieldName]: fields }; if (data) return { ...data, ...traceData }; return traceData; } if (data) return { ...data, ...fields }; return fields; } } return data || {}; }; return { id: config.id, disabled: config.disabled, onBeforeDataOut: ({ data }) => addTraceContext(data) }; } //#endregion export { openTelemetryPlugin }; //# sourceMappingURL=index.mjs.map