@loglayer/plugin-opentelemetry
Version:
OpenTelemetry plugin for LogLayer that adds trace context to logs.
44 lines (42 loc) • 1.25 kB
JavaScript
let _opentelemetry_api = require("@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 = _opentelemetry_api.trace.getSpan(_opentelemetry_api.context.active());
if (span) {
const spanContext = span.spanContext();
if ((0, _opentelemetry_api.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
exports.openTelemetryPlugin = openTelemetryPlugin;
//# sourceMappingURL=index.cjs.map