UNPKG

@loglayer/plugin-opentelemetry

Version:

OpenTelemetry plugin for LogLayer that adds trace context to logs.

49 lines 1.36 kB
// src/index.ts import { context, isSpanContextValid, trace } from "@opentelemetry/api"; 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) }; } export { openTelemetryPlugin }; //# sourceMappingURL=index.js.map