Skip to content

Commit 5fa11ce

Browse files
committed
feat(stackable-telemetry): Add a settings builder for the otlp log exporter
1 parent 7d79fae commit 5fa11ce

File tree

3 files changed

+85
-7
lines changed

3 files changed

+85
-7
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, OtlpTraceSettings};
17+
use settings::{ConsoleLogSettings, OtlpLogSettings, 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};
@@ -383,16 +383,15 @@ impl TracingBuilder<builder_state::Config> {
383383
/// in the opentelemetry crates. See [`Tracing`].
384384
pub fn with_otlp_log_exporter(
385385
self,
386-
env_var: &'static str,
387-
default_level_filter: LevelFilter,
386+
settings: OtlpLogSettings,
388387
) -> TracingBuilder<builder_state::Config> {
389388
TracingBuilder {
390389
service_name: self.service_name,
391390
console_log_config: self.console_log_config,
392391
otlp_log_config: SubscriberConfig {
393-
enabled: true,
394-
env_var,
395-
default_level_filter,
392+
enabled: settings.common_settings.enabled,
393+
env_var: settings.common_settings.environment_variable,
394+
default_level_filter: settings.common_settings.default_level,
396395
},
397396
otlp_trace_config: self.otlp_trace_config,
398397
_marker: self._marker,
@@ -502,7 +501,13 @@ mod test {
502501
.enabled(true)
503502
.build(),
504503
)
505-
.with_otlp_log_exporter("ABC_OTLP_LOG", LevelFilter::DEBUG)
504+
.with_otlp_log_exporter(
505+
Settings::builder()
506+
.env_var("ABC_OTLP_LOG")
507+
.default_level(LevelFilter::DEBUG)
508+
.enabled(true)
509+
.build(),
510+
)
506511
.with_otlp_trace_exporter(
507512
Settings::builder()
508513
.env_var("ABC_OTLP_TRACE")

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

Lines changed: 7 additions & 0 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_log;
7+
pub use otlp_log::*;
8+
69
pub mod otlp_trace;
710
pub use otlp_trace::*;
811

@@ -63,6 +66,10 @@ impl SettingsBuilder {
6366
self.into()
6467
}
6568

69+
pub fn otlp_log_settings_builder(self) -> OtlpLogSettingsBuilder {
70+
self.into()
71+
}
72+
6673
pub fn otlp_trace_settings_builder(self) -> OtlpTraceSettingsBuilder {
6774
self.into()
6875
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
use super::{Build, Settings, SettingsBuilder};
2+
3+
#[derive(Debug, Default, PartialEq)]
4+
pub struct OtlpLogSettings {
5+
pub common_settings: Settings,
6+
}
7+
8+
pub struct OtlpLogSettingsBuilder {
9+
pub(crate) common_settings: Settings,
10+
}
11+
12+
impl OtlpLogSettingsBuilder {
13+
pub fn build(self) -> OtlpLogSettings {
14+
self.into()
15+
}
16+
}
17+
18+
impl From<SettingsBuilder> for OtlpLogSettingsBuilder {
19+
fn from(value: SettingsBuilder) -> Self {
20+
Self {
21+
common_settings: value.into(),
22+
}
23+
}
24+
}
25+
26+
impl From<OtlpLogSettingsBuilder> for OtlpLogSettings {
27+
fn from(value: OtlpLogSettingsBuilder) -> Self {
28+
Self {
29+
common_settings: value.common_settings,
30+
}
31+
}
32+
}
33+
34+
impl Build<OtlpLogSettings> for SettingsBuilder {
35+
fn build(self) -> OtlpLogSettings {
36+
OtlpLogSettings {
37+
common_settings: self.into(),
38+
..Default::default()
39+
}
40+
}
41+
}
42+
#[cfg(test)]
43+
mod test {
44+
use tracing::level_filters::LevelFilter;
45+
46+
use super::*;
47+
48+
#[test]
49+
fn builds_settings() {
50+
let expected = OtlpLogSettings {
51+
common_settings: Settings {
52+
environment_variable: "hello",
53+
enabled: true,
54+
default_level: LevelFilter::DEBUG,
55+
},
56+
};
57+
let result = Settings::builder()
58+
.enabled(true)
59+
.env_var("hello")
60+
.default_level(LevelFilter::DEBUG)
61+
.otlp_log_settings_builder()
62+
.build();
63+
64+
assert_eq!(expected, result);
65+
}
66+
}

0 commit comments

Comments
 (0)