Skip to main content

fatfs/
log_macros.rs

1//! This module offers a convenient way to enable only a subset of logging levels
2//! for just this `fatfs` crate only without changing the logging levels
3//! of other crates in a given project.
4
5use log::LevelFilter;
6
7#[cfg(feature = "log_level_trace")]
8pub const MAX_LOG_LEVEL: LevelFilter = LevelFilter::Trace;
9
10#[cfg(all(not(feature = "log_level_trace"), feature = "log_level_debug",))]
11pub const MAX_LOG_LEVEL: LevelFilter = LevelFilter::Debug;
12
13#[cfg(all(
14    not(feature = "log_level_trace"),
15    not(feature = "log_level_debug"),
16    feature = "log_level_info",
17))]
18pub const MAX_LOG_LEVEL: LevelFilter = LevelFilter::Info;
19
20#[cfg(all(
21    not(feature = "log_level_trace"),
22    not(feature = "log_level_debug"),
23    not(feature = "log_level_info"),
24    feature = "log_level_warn",
25))]
26pub const MAX_LOG_LEVEL: LevelFilter = LevelFilter::Warn;
27
28#[cfg(all(
29    not(feature = "log_level_trace"),
30    not(feature = "log_level_debug"),
31    not(feature = "log_level_info"),
32    not(feature = "log_level_warn"),
33    feature = "log_level_error",
34))]
35pub const MAX_LOG_LEVEL: LevelFilter = LevelFilter::Error;
36
37#[cfg(all(
38    not(feature = "log_level_trace"),
39    not(feature = "log_level_debug"),
40    not(feature = "log_level_info"),
41    not(feature = "log_level_warn"),
42    not(feature = "log_level_error"),
43))]
44pub const MAX_LOG_LEVEL: LevelFilter = LevelFilter::Off;
45
46#[macro_export]
47macro_rules! log {
48    (target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
49        let lvl = $lvl;
50        if lvl <= $crate::log_macros::MAX_LOG_LEVEL {
51            log::log!(target: $target, lvl, $($arg)+);
52        }
53    });
54    ($lvl:expr, $($arg:tt)+) => ({
55        let lvl = $lvl;
56        if lvl <= $crate::log_macros::MAX_LOG_LEVEL {
57            log::log!(lvl, $($arg)+);
58        }
59    })
60}
61
62#[macro_export]
63macro_rules! error {
64    (target: $target:expr, $($arg:tt)+) => (
65        log!(target: $target, log::Level::Error, $($arg)+);
66    );
67    ($($arg:tt)+) => (
68        log!(log::Level::Error, $($arg)+);
69    )
70}
71
72#[macro_export]
73macro_rules! warn {
74    (target: $target:expr, $($arg:tt)+) => (
75        log!(target: $target, log::Level::Warn, $($arg)+);
76    );
77    ($($arg:tt)+) => (
78        log!(log::Level::Warn, $($arg)+);
79    )
80}
81
82#[macro_export]
83macro_rules! info {
84    (target: $target:expr, $($arg:tt)+) => (
85        log!(target: $target, log::Level::Info, $($arg)+);
86    );
87    ($($arg:tt)+) => (
88        log!(log::Level::Info, $($arg)+);
89    )
90}
91
92#[macro_export]
93macro_rules! debug {
94    (target: $target:expr, $($arg:tt)+) => (
95        log!(target: $target, log::Level::Debug, $($arg)+);
96    );
97    ($($arg:tt)+) => (
98        log!(log::Level::Debug, $($arg)+);
99    )
100}
101
102#[macro_export]
103macro_rules! trace {
104    (target: $target:expr, $($arg:tt)+) => (
105        log!(target: $target, log::Level::Trace, $($arg)+);
106    );
107    ($($arg:tt)+) => (
108        log!(log::Level::Trace, $($arg)+);
109    )
110}