@loglayer/plugin-opentelemetry
Version:
OpenTelemetry plugin for LogLayer that adds trace context to logs.
49 lines (47 loc) • 1.45 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});// src/index.ts
var _api = require('@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 = _api.trace.getSpan(_api.context.active());
if (span) {
const spanContext = span.spanContext();
if (_api.isSpanContextValid.call(void 0, 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)
};
}
exports.openTelemetryPlugin = openTelemetryPlugin;
//# sourceMappingURL=index.cjs.map