@loglayer/plugin-opentelemetry
Version:
OpenTelemetry plugin for LogLayer that adds trace context to logs.
49 lines • 1.36 kB
JavaScript
// 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