1use thiserror::Error;
4
5pub type LoggingResult<T> = Result<T, LoggingError>;
7
8#[derive(Error, Debug)]
10pub enum LoggingError {
11 #[error("NATS error: {0}")]
13 Nats(#[from] async_nats::Error),
14
15 #[error("Serialization error: {0}")]
17 Serialization(#[from] serde_json::Error),
18
19 #[error("Configuration error: {0}")]
21 Config(String),
22
23 #[error("Rate limit exceeded")]
25 RateLimitExceeded,
26
27 #[error("Log buffer overflow")]
29 BufferOverflow,
30
31 #[error("Operation timed out")]
33 Timeout,
34
35 #[error("Logging error: {0}")]
37 Generic(String),
38}
39
40impl From<&str> for LoggingError {
41 fn from(s: &str) -> Self {
42 LoggingError::Generic(s.to_string())
43 }
44}
45
46impl From<String> for LoggingError {
47 fn from(s: String) -> Self {
48 LoggingError::Generic(s)
49 }
50}