Skip to content

Commit bad3ee5

Browse files
committed
Add ability to use a custom sampler
1 parent 314afdc commit bad3ee5

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

src/config.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use std::{
1212
use opentelemetry_sdk::{
1313
logs::LogProcessor,
1414
metrics::reader::MetricReader,
15-
trace::{IdGenerator, SpanProcessor},
15+
trace::{IdGenerator, ShouldSample, SpanProcessor, TracerProviderBuilder},
1616
};
1717
use regex::Regex;
1818
use tracing::{Level, level_filters::LevelFilter};
@@ -373,12 +373,12 @@ pub struct AdvancedOptions {
373373
pub(crate) resources: Vec<opentelemetry_sdk::Resource>,
374374
pub(crate) log_record_processors: Vec<BoxedLogProcessor>,
375375
pub(crate) enable_tracing_metrics: bool,
376-
//
377-
//
378-
// TODO: arguments below supported by Python
376+
pub(crate) trace_provider: TracerProviderBuilder, //
377+
//
378+
// TODO: arguments below supported by Python
379379

380-
// /// Generator for nanosecond start and end timestamps of spans.
381-
// pub ns_timestamp_generator: Option,
380+
// /// Generator for nanosecond start and end timestamps of spans.
381+
// pub ns_timestamp_generator: Option,
382382
}
383383

384384
impl AdvancedOptions {
@@ -418,6 +418,13 @@ impl AdvancedOptions {
418418
self
419419
}
420420

421+
/// Add a custom sampler implementation
422+
#[must_use]
423+
pub fn with_sampler<T: ShouldSample + 'static>(mut self, sampler: T) -> Self {
424+
self.trace_provider = self.trace_provider.with_sampler(sampler);
425+
self
426+
}
427+
421428
/// Support capturing tracing events as metrics as per [`tracing_opentelemetry::MetricsLayer`](https://docs.rs/tracing-opentelemetry/latest/tracing_opentelemetry/struct.MetricsLayer.html).
422429
#[must_use]
423430
pub fn with_tracing_metrics(mut self, enable: bool) -> Self {

src/logfire.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ impl Logfire {
290290
SendToLogfire::No => false,
291291
};
292292

293-
let mut tracer_provider_builder = SdkTracerProvider::builder();
293+
let mut tracer_provider_builder = advanced_options.trace_provider;
294294
let mut logger_provider_builder = SdkLoggerProvider::builder();
295295
let mut meter_provider_builder = SdkMeterProvider::builder();
296296

0 commit comments

Comments
 (0)