use klauthed_macros::DomainError;
#[derive(Debug, DomainError)]
#[domain(prefix = "observability", category = "internal")]
#[non_exhaustive]
pub enum ObservabilityError {
AlreadyInitialized,
Subscriber(String),
#[cfg(feature = "metrics")]
Metrics(String),
#[cfg(feature = "otel")]
Otel(String),
}
impl std::fmt::Display for ObservabilityError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ObservabilityError::AlreadyInitialized => {
f.write_str("telemetry has already been initialized in this process")
}
ObservabilityError::Subscriber(msg) => write!(f, "subscriber init failed: {msg}"),
#[cfg(feature = "metrics")]
ObservabilityError::Metrics(msg) => write!(f, "metrics init failed: {msg}"),
#[cfg(feature = "otel")]
ObservabilityError::Otel(msg) => write!(f, "opentelemetry init failed: {msg}"),
}
}
}
impl std::error::Error for ObservabilityError {}