1use 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}