@vtex/diagnostics-nodejs
Version:
Diagnostics library for Node.js applications
65 lines • 2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DebugSampler = void 0;
exports.newDebugSampler = newDebugSampler;
const api_1 = require("@opentelemetry/api");
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
const metadata_1 = require("./metadata");
const debugAttributeKeys = [
'debug',
'debug.enabled',
'sampling.debug',
'force.sampling'
];
class DebugSampler {
shouldSample(context, traceId, spanName, spanKind, attributes, links) {
const metadata = (0, metadata_1.newSamplerMetadata)('debug');
for (const key of debugAttributeKeys) {
if (attributes[key] === 'true' || attributes[key] === true) {
return {
decision: sdk_trace_base_1.SamplingDecision.RECORD_AND_SAMPLED,
attributes: metadata
.setDecision(sdk_trace_base_1.SamplingDecision.RECORD_AND_SAMPLED, 'debug_enabled')
.setTrigger(key)
.setRate(1.0)
.toAttributes()
};
}
if (attributes[key] === 'false' || attributes[key] === false) {
return {
decision: sdk_trace_base_1.SamplingDecision.NOT_RECORD,
attributes: metadata
.setDecision(sdk_trace_base_1.SamplingDecision.NOT_RECORD, 'debug_disabled')
.setTrigger(key)
.setRate(0.0)
.toAttributes()
};
}
}
const parentContext = api_1.trace.getSpanContext(context);
if (parentContext?.traceFlags && (parentContext.traceFlags & 1)) {
return {
decision: sdk_trace_base_1.SamplingDecision.RECORD_AND_SAMPLED,
attributes: metadata
.setDecision(sdk_trace_base_1.SamplingDecision.RECORD_AND_SAMPLED, 'parent_sampled')
.setRate(1.0)
.toAttributes()
};
}
return {
decision: sdk_trace_base_1.SamplingDecision.NOT_RECORD,
attributes: metadata
.setDecision(sdk_trace_base_1.SamplingDecision.NOT_RECORD, 'no_debug_context')
.setRate(0.0)
.toAttributes()
};
}
toString() {
return 'DebugSampler';
}
}
exports.DebugSampler = DebugSampler;
function newDebugSampler() {
return new DebugSampler();
}
//# sourceMappingURL=debug.js.map