Skip to content

Commit 0455419

Browse files
committed
feat(stackable-telemetry): Add a settings builder for the otlp trace exporter
1 parent 98bac73 commit 0455419

File tree

3 files changed

+80
-12
lines changed

3 files changed

+80
-12
lines changed

crates/stackable-telemetry/src/tracing/mod.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use opentelemetry_sdk::{
1414
trace, Resource,
1515
};
1616
use opentelemetry_semantic_conventions::resource;
17-
use settings::ConsoleLogSettings;
17+
use settings::{ConsoleLogSettings, OtlpTraceSettings};
1818
use snafu::{ResultExt as _, Snafu};
1919
use tracing::{level_filters::LevelFilter, subscriber::SetGlobalDefaultError};
2020
use tracing_subscriber::{filter::Directive, layer::SubscriberExt, EnvFilter, Layer, Registry};
@@ -407,17 +407,16 @@ impl TracingBuilder<builder_state::Config> {
407407
/// in the opentelemetry crates. See [`Tracing`].
408408
pub fn with_otlp_trace_exporter(
409409
self,
410-
env_var: &'static str,
411-
default_level_filter: LevelFilter,
410+
settings: OtlpTraceSettings,
412411
) -> TracingBuilder<builder_state::Config> {
413412
TracingBuilder {
414413
service_name: self.service_name,
415414
console_log_config: self.console_log_config,
416415
otlp_log_config: self.otlp_log_config,
417416
otlp_trace_config: SubscriberConfig {
418-
enabled: true,
419-
env_var,
420-
default_level_filter,
417+
enabled: settings.common_settings.enabled,
418+
env_var: settings.common_settings.environment_variable,
419+
default_level_filter: settings.common_settings.default_level,
421420
},
422421
_marker: self._marker,
423422
}
@@ -505,7 +504,13 @@ mod test {
505504
.build(),
506505
)
507506
.with_otlp_log_exporter("ABC_OTLP_LOG", LevelFilter::DEBUG)
508-
.with_otlp_trace_exporter("ABC_OTLP_TRACE", LevelFilter::TRACE)
507+
.with_otlp_trace_exporter(
508+
Settings::builder()
509+
.env_var("ABC_OTLP_TRACE")
510+
.default_level(LevelFilter::TRACE)
511+
.enabled(true)
512+
.build(),
513+
)
509514
.build();
510515

511516
assert_eq!(

crates/stackable-telemetry/src/tracing/settings/mod.rs

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ use tracing::level_filters::LevelFilter;
33
pub mod console_log;
44
pub use console_log::*;
55

6+
pub mod otlp_trace;
7+
pub use otlp_trace::*;
8+
69
#[derive(Debug, PartialEq)]
710
pub struct Settings {
811
pub environment_variable: &'static str,
@@ -49,6 +52,15 @@ impl Build<ConsoleLogSettings> for SettingsBuilder {
4952
}
5053
}
5154

55+
impl Build<OtlpTraceSettings> for SettingsBuilder {
56+
fn build(self) -> OtlpTraceSettings {
57+
OtlpTraceSettings {
58+
common_settings: self.into(),
59+
..Default::default()
60+
}
61+
}
62+
}
63+
5264
impl SettingsBuilder {
5365
pub fn env_var(mut self, name: &'static str) -> Self {
5466
self.environment_variable = name;
@@ -70,13 +82,13 @@ impl SettingsBuilder {
7082
// self.into()
7183
// }
7284

73-
pub fn console_builder(self) -> ConsoleLogSettingsBuilder {
85+
pub fn console_log_builder(self) -> ConsoleLogSettingsBuilder {
7486
self.into()
7587
}
7688

77-
// pub fn xxx_builder(self) -> XxxSettingsBuilder {
78-
// self.into()
79-
// }
89+
pub fn otlp_trace_builder(self) -> OtlpTraceSettingsBuilder {
90+
self.into()
91+
}
8092
}
8193

8294
impl Default for SettingsBuilder {
@@ -108,6 +120,14 @@ impl From<SettingsBuilder> for ConsoleLogSettingsBuilder {
108120
}
109121
}
110122

123+
impl From<SettingsBuilder> for OtlpTraceSettingsBuilder {
124+
fn from(value: SettingsBuilder) -> Self {
125+
Self {
126+
common_settings: value.into(),
127+
}
128+
}
129+
}
130+
111131
#[derive(Debug, Default, PartialEq)]
112132
pub enum Format {
113133
#[default]
@@ -134,11 +154,30 @@ mod test {
134154
.enabled(true)
135155
.env_var("hello")
136156
.default_level(LevelFilter::DEBUG)
137-
.console_builder()
157+
.console_log_builder()
138158
.log_format(Format::Plain)
139159
// color
140160
.build();
141161

142162
assert_eq!(expected, result);
143163
}
164+
165+
#[test]
166+
fn builds_otlp_trace_settings() {
167+
let expected = OtlpTraceSettings {
168+
common_settings: Settings {
169+
environment_variable: "hello",
170+
enabled: true,
171+
default_level: LevelFilter::DEBUG,
172+
},
173+
};
174+
let result: OtlpTraceSettings = Settings::builder()
175+
.enabled(true)
176+
.env_var("hello")
177+
.default_level(LevelFilter::DEBUG)
178+
.otlp_trace_builder()
179+
.build();
180+
181+
assert_eq!(expected, result);
182+
}
144183
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use super::Settings;
2+
3+
#[derive(Debug, Default, PartialEq)]
4+
pub struct OtlpTraceSettings {
5+
pub common_settings: Settings,
6+
}
7+
8+
pub struct OtlpTraceSettingsBuilder {
9+
pub(crate) common_settings: Settings,
10+
}
11+
12+
impl OtlpTraceSettingsBuilder {
13+
pub fn build(self) -> OtlpTraceSettings {
14+
self.into()
15+
}
16+
}
17+
18+
impl From<OtlpTraceSettingsBuilder> for OtlpTraceSettings {
19+
fn from(value: OtlpTraceSettingsBuilder) -> Self {
20+
Self {
21+
common_settings: value.common_settings,
22+
}
23+
}
24+
}

0 commit comments

Comments
 (0)