Skip to main content

atomr_core/event/
logging.rs

1//! Log events published on the event stream. akka.net: `Event/Logging.cs`.
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
4pub enum LogLevel {
5    Error,
6    Warning,
7    Info,
8    Debug,
9}
10
11#[derive(Debug, Clone)]
12pub struct LogEvent {
13    pub level: LogLevel,
14    pub source: String,
15    pub message: String,
16}
17
18impl LogEvent {
19    pub fn new(level: LogLevel, source: impl Into<String>, message: impl Into<String>) -> Self {
20        Self { level, source: source.into(), message: message.into() }
21    }
22
23    pub fn emit(&self) {
24        match self.level {
25            LogLevel::Error => tracing::error!(source = %self.source, "{}", self.message),
26            LogLevel::Warning => tracing::warn!(source = %self.source, "{}", self.message),
27            LogLevel::Info => tracing::info!(source = %self.source, "{}", self.message),
28            LogLevel::Debug => tracing::debug!(source = %self.source, "{}", self.message),
29        }
30    }
31}