Skip to main content

rivet_logger/logger/
error.rs

1use std::error::Error;
2use std::fmt::{Display, Formatter};
3
4use super::BoxError;
5
6#[derive(Debug)]
7pub enum LoggerError {
8    EmptyHandlerStack,
9    EmptyProcessorStack,
10    InvalidLevelValue(String),
11    InvalidProcessorConfig(String),
12    Unhandled(BoxError),
13}
14
15impl Display for LoggerError {
16    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
17        match self {
18            Self::EmptyHandlerStack => write!(f, "handler stack is empty"),
19            Self::EmptyProcessorStack => write!(f, "processor stack is empty"),
20            Self::InvalidLevelValue(level) => write!(
21                f,
22                "level \"{level}\" is not defined, use one of: DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY"
23            ),
24            Self::InvalidProcessorConfig(message) => write!(f, "{message}"),
25            Self::Unhandled(err) => write!(f, "{err}"),
26        }
27    }
28}
29
30impl Error for LoggerError {
31    fn source(&self) -> Option<&(dyn Error + 'static)> {
32        match self {
33            Self::Unhandled(err) => Some(err.as_ref()),
34            _ => None,
35        }
36    }
37}