use opentelemetry_sdk::{
logs::SdkLoggerProvider, metrics::SdkMeterProvider, trace::SdkTracerProvider,
};
use tracing::warn;
#[expect(clippy::struct_field_names)]
pub struct OpenTelemetryGuard {
pub(crate) tracer_provider: SdkTracerProvider,
pub(crate) meter_provider: SdkMeterProvider,
pub(crate) logger_provider: SdkLoggerProvider,
}
impl Drop for OpenTelemetryGuard {
fn drop(&mut self) {
if let Err(err) = self.tracer_provider.shutdown() {
warn!("{err}");
}
if let Err(err) = self.meter_provider.shutdown() {
warn!("{err}");
}
if let Err(err) = self.logger_provider.shutdown() {
warn!("{err}");
}
}
}