@loglayer/plugin-opentelemetry
Version:
OpenTelemetry plugin for LogLayer that adds trace context to logs.
44 lines (42 loc) • 1.19 kB
JavaScript
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