error_log/
messages.rs

1#![cfg(feature = "messages")]
2use crate::{Entry, ErrorLog};
3use alloc::string::String;
4use log::LevelFilter;
5
6#[macro_export]
7/// Attach error message to given [`ErrorLog`]
8macro_rules! log_error {
9    ($errlog: ident, $($msg: tt)+) => {
10        $errlog.push_message(error_log::LevelFilter::Error, format!($($msg)+));
11    };
12}
13#[macro_export]
14/// Attach warning to given [`ErrorLog`]
15macro_rules! log_warn {
16    ($errlog: ident, $($msg: tt)+) => {
17        $errlog.push_message(error_log::LevelFilter::Warn, format!($($msg)+));
18    };
19}
20#[macro_export]
21/// Attach information to given [`ErrorLog`]
22macro_rules! log_info {
23    ($errlog: ident, $($msg: tt)+) => {
24        $errlog.push_message(error_log::LevelFilter::Info, format!($($msg)+));
25    };
26}
27#[macro_export]
28/// Attaches debug message to given [`ErrorLog`]
29macro_rules! log_debug {
30    ($errlog: ident, $($msg: tt)+) => {
31        $errlog.push_message(error_log::LevelFilter::Debug, format!($($msg)+));
32    };
33}
34#[macro_export]
35/// Attach trace message to given [`ErrorLog`]
36macro_rules! log_trace {
37    ($errlog: ident, $($msg: tt)+) => {
38        $errlog.push_message(error_log::LevelFilter::Trace, format!($($msg)+));
39    };
40}
41
42impl<T, E> ErrorLog<T, E> {
43    /// Sets max [`LevelFilter`] of displayed messages
44    /// Note: when [`LevelFilter::Off`], all messages get ignored, but errors still show
45    pub fn max_level(&mut self, level: LevelFilter) -> &mut Self {
46        self.max_level = level;
47        self
48    }
49    /// Sets different max [`LevelFilter`] of displayed messages depending on if this is an debug build or a release one.
50    pub fn max_level_debug(&mut self, release: LevelFilter, debug: LevelFilter) -> &mut Self {
51        self.max_level = match cfg!(debug_assertions) {
52            true => debug,
53            false => release,
54        };
55        self
56    }
57    /// Gets max [`LevelFilter`]. Any Message of Lower Priority will be ignored
58    pub fn get_max_level(&self) -> &LevelFilter {
59        &self.max_level
60    }
61    /**
62    Pushes Message to entries.
63    Its recommended to use the built in macros instead:
64    - [`log_error`]
65    - [`log_warn`]
66    - [`log_info`]
67    - [`log_debug`]
68    - [`log_trace`]
69    */
70    pub fn push_message(&mut self, level: LevelFilter, msg: impl Into<String>) -> &mut Self {
71        self.entries.push(Entry::new_message(level, msg.into()));
72        self
73    }
74}