Skip to content

Commit 2c54ca0

Browse files
committed
chore(stackable-telemetry): Introduce the CommonSettings trait for quicker access to common settings from subscriber specific settings
1 parent 71ec75f commit 2c54ca0

File tree

5 files changed

+72
-16
lines changed

5 files changed

+72
-16
lines changed

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

Lines changed: 13 additions & 13 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, OtlpLogSettings, OtlpTraceSettings};
17+
use settings::{CommonSettings as _, ConsoleLogSettings, OtlpLogSettings, OtlpTraceSettings};
1818
use snafu::{ResultExt as _, Snafu};
1919
use tracing::subscriber::SetGlobalDefaultError;
2020
use tracing_subscriber::{filter::Directive, layer::SubscriberExt, EnvFilter, Layer, Registry};
@@ -146,23 +146,23 @@ impl Tracing {
146146
pub fn init(mut self) -> Result<Tracing> {
147147
let mut layers: Vec<Box<dyn Layer<Registry> + Sync + Send>> = Vec::new();
148148

149-
if self.console_log_settings.common_settings.enabled {
149+
if self.console_log_settings.enabled() {
150150
let env_filter_layer = env_filter_builder(
151151
&self
152152
.console_log_settings
153153
.common_settings
154154
.environment_variable,
155-
self.console_log_settings.common_settings.default_level,
155+
self.console_log_settings.default_level(),
156156
);
157157
let console_output_layer =
158158
tracing_subscriber::fmt::layer().with_filter(env_filter_layer);
159159
layers.push(console_output_layer.boxed());
160160
}
161161

162-
if self.otlp_log_settings.common_settings.enabled {
162+
if self.otlp_log_settings.enabled() {
163163
let env_filter_layer = env_filter_builder(
164-
&self.otlp_log_settings.common_settings.environment_variable,
165-
self.otlp_log_settings.common_settings.default_level,
164+
&self.otlp_log_settings.environment_variable(),
165+
self.otlp_log_settings.default_level(),
166166
)
167167
// TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved
168168
.add_directive("h2=off".parse().expect("invalid directive"));
@@ -187,13 +187,13 @@ impl Tracing {
187187
self.logger_provider = Some(otel_log);
188188
}
189189

190-
if self.otlp_trace_settings.common_settings.enabled {
190+
if self.otlp_trace_settings.enabled() {
191191
let env_filter_layer = env_filter_builder(
192192
&self
193193
.otlp_trace_settings
194194
.common_settings
195195
.environment_variable,
196-
self.otlp_trace_settings.common_settings.default_level,
196+
self.otlp_trace_settings.default_level(),
197197
)
198198
// TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved
199199
.add_directive("h2=off".parse().expect("invalid directive"));
@@ -241,12 +241,12 @@ impl Tracing {
241241
impl Drop for Tracing {
242242
fn drop(&mut self) {
243243
tracing::debug!(
244-
opentelemetry.tracing.enabled = self.otlp_trace_settings.common_settings.enabled,
245-
opentelemetry.logger.enabled = self.otlp_log_settings.common_settings.enabled,
244+
opentelemetry.tracing.enabled = self.otlp_trace_settings.enabled(),
245+
opentelemetry.logger.enabled = self.otlp_log_settings.enabled(),
246246
"shutting down opentelemetry OTLP providers"
247247
);
248248

249-
if self.otlp_trace_settings.common_settings.enabled {
249+
if self.otlp_trace_settings.enabled() {
250250
// NOTE (@NickLarsenNZ): This might eventually be replaced with something like SdkMeterProvider::shutdown(&self)
251251
// as has been done with the LoggerProvider (further below)
252252
// see: https://github.com/open-telemetry/opentelemetry-rust/pull/1412/files#r1409608679
@@ -468,8 +468,8 @@ mod test {
468468
log_format: Default::default()
469469
}
470470
);
471-
assert!(!trace_guard.otlp_log_settings.common_settings.enabled);
472-
assert!(!trace_guard.otlp_trace_settings.common_settings.enabled);
471+
assert!(!trace_guard.otlp_log_settings.enabled());
472+
assert!(!trace_guard.otlp_trace_settings.enabled());
473473
}
474474

475475
#[test]

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use super::{Build, Settings, SettingsBuilder};
1+
use tracing::level_filters::LevelFilter;
2+
3+
use super::{Build, CommonSettings, Settings, SettingsBuilder};
24

35
#[derive(Debug, Default, PartialEq)]
46
pub struct ConsoleLogSettings {
@@ -57,6 +59,20 @@ impl Build<ConsoleLogSettings> for SettingsBuilder {
5759
}
5860
}
5961

62+
impl CommonSettings for ConsoleLogSettings {
63+
fn environment_variable(&self) -> &'static str {
64+
self.common_settings.environment_variable
65+
}
66+
67+
fn enabled(&self) -> bool {
68+
self.common_settings.enabled
69+
}
70+
71+
fn default_level(&self) -> LevelFilter {
72+
self.common_settings.default_level
73+
}
74+
}
75+
6076
#[cfg(test)]
6177
mod test {
6278
use tracing::level_filters::LevelFilter;

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ pub use otlp_log::*;
99
pub mod otlp_trace;
1010
pub use otlp_trace::*;
1111

12+
// this trait is to make it simpler to access common settings from specific settings.
13+
pub trait CommonSettings {
14+
fn environment_variable(&self) -> &'static str;
15+
fn enabled(&self) -> bool;
16+
fn default_level(&self) -> LevelFilter;
17+
}
18+
1219
#[derive(Debug, PartialEq)]
1320
pub struct Settings {
1421
pub environment_variable: &'static str,

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use super::{Build, Settings, SettingsBuilder};
1+
use tracing::level_filters::LevelFilter;
2+
3+
use super::{Build, CommonSettings, Settings, SettingsBuilder};
24

35
#[derive(Debug, Default, PartialEq)]
46
pub struct OtlpLogSettings {
@@ -39,6 +41,21 @@ impl Build<OtlpLogSettings> for SettingsBuilder {
3941
}
4042
}
4143
}
44+
45+
impl CommonSettings for OtlpLogSettings {
46+
fn environment_variable(&self) -> &'static str {
47+
self.common_settings.environment_variable
48+
}
49+
50+
fn enabled(&self) -> bool {
51+
self.common_settings.enabled
52+
}
53+
54+
fn default_level(&self) -> LevelFilter {
55+
self.common_settings.default_level
56+
}
57+
}
58+
4259
#[cfg(test)]
4360
mod test {
4461
use tracing::level_filters::LevelFilter;

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use super::{Build, Settings, SettingsBuilder};
1+
use tracing::level_filters::LevelFilter;
2+
3+
use super::{Build, CommonSettings, Settings, SettingsBuilder};
24

35
#[derive(Debug, Default, PartialEq)]
46
pub struct OtlpTraceSettings {
@@ -40,6 +42,20 @@ impl Build<OtlpTraceSettings> for SettingsBuilder {
4042
}
4143
}
4244

45+
impl CommonSettings for OtlpTraceSettings {
46+
fn environment_variable(&self) -> &'static str {
47+
self.common_settings.environment_variable
48+
}
49+
50+
fn enabled(&self) -> bool {
51+
self.common_settings.enabled
52+
}
53+
54+
fn default_level(&self) -> LevelFilter {
55+
self.common_settings.default_level
56+
}
57+
}
58+
4359
#[cfg(test)]
4460
mod test {
4561
use tracing::level_filters::LevelFilter;

0 commit comments

Comments
 (0)