-
Notifications
You must be signed in to change notification settings - Fork 499
/
Copy pathconfig.rs
86 lines (77 loc) · 2.72 KB
/
config.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//! SDK Configuration
//!
//! Configuration represents the global tracing configuration, overrides
//! can be set for the default OpenTelemetry limits and Sampler.
use crate::{api, sdk, sdk::trace::Sampler};
use std::sync::Arc;
/// Default trace configuration
pub fn config() -> Config {
Config::default()
}
/// Tracer configuration
#[derive(Debug)]
pub struct Config {
/// The sampler that the sdk should use
pub default_sampler: Box<dyn sdk::trace::ShouldSample>,
/// The id generator that the sdk should use
pub id_generator: Box<dyn api::trace::IdGenerator>,
/// The max events that can be added to a `Span`.
pub max_events_per_span: u32,
/// The max attributes that can be added to a `Span`.
pub max_attributes_per_span: u32,
/// The max links that can be added to a `Span`.
pub max_links_per_span: u32,
/// Contains attributes representing an entity that produces telemetry.
pub resource: Arc<sdk::Resource>,
}
impl Config {
/// Specify the default sampler to be used.
pub fn with_default_sampler<T: sdk::trace::ShouldSample + 'static>(
mut self,
sampler: T,
) -> Self {
self.default_sampler = Box::new(sampler);
self
}
/// Specify the id generator to be used.
pub fn with_id_generator<T: api::trace::IdGenerator + 'static>(
mut self,
id_generator: T,
) -> Self {
self.id_generator = Box::new(id_generator);
self
}
/// Specify the number of events to be recorded per span.
pub fn with_max_events_per_span(mut self, max_events: u32) -> Self {
self.max_events_per_span = max_events;
self
}
/// Specify the number of attributes to be recorded per span.
pub fn with_max_attributes_per_span(mut self, max_attributes: u32) -> Self {
self.max_attributes_per_span = max_attributes;
self
}
/// Specify the number of events to be recorded per span.
pub fn with_max_links_per_span(mut self, max_links: u32) -> Self {
self.max_links_per_span = max_links;
self
}
/// Specify the attributes representing the entity that produces telemetry
pub fn with_resource(mut self, resource: sdk::Resource) -> Self {
self.resource = Arc::new(resource);
self
}
}
impl Default for Config {
/// Create default global sdk configuration.
fn default() -> Self {
Config {
default_sampler: Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))),
id_generator: Box::new(sdk::trace::IdGenerator::default()),
max_events_per_span: 128,
max_attributes_per_span: 32,
max_links_per_span: 32,
resource: Arc::new(sdk::Resource::default()),
}
}
}