Skip to main content

cossh/log/
macros.rs

1//! Logging macros for convenient logging throughout the codebase
2//!
3//! These macros provide a simple interface to the logging system:
4//! - `debug_enabled!()` - Check if debug mode is enabled
5//! - `log_debug!(...)` - Log debug messages
6//! - `log_info!(...)` - Log informational messages
7//! - `log_warn!(...)` - Log warning messages
8//! - `log_error!(...)` - Log error messages
9//! - `log_ssh!(...)` - Log SSH session output
10
11/// Check if debug logging is enabled
12#[macro_export]
13macro_rules! debug_enabled {
14    () => {{ $crate::log::LOGGER.is_debug_enabled() }};
15}
16
17/// Check if raw debug logging is enabled
18#[macro_export]
19macro_rules! raw_debug_enabled {
20    () => {{ $crate::log::LOGGER.is_raw_debug_enabled() }};
21}
22
23/// Log a debug message
24#[macro_export]
25macro_rules! log_debug {
26    ($msg:expr) => {{
27        if $crate::log::LOGGER.is_debug_enabled() {
28            let _ = $crate::log::LOGGER.log_debug(::core::convert::AsRef::<str>::as_ref(&$msg));
29        }
30    }};
31    ($($arg:tt)*) => {{
32        if $crate::log::LOGGER.is_debug_enabled() {
33            let _ = $crate::log::LOGGER.log_debug(&format!($($arg)*));
34        }
35    }};
36}
37
38/// Log a raw-content debug message
39#[macro_export]
40macro_rules! log_debug_raw {
41    ($msg:expr) => {{
42        if $crate::log::LOGGER.is_raw_debug_enabled() {
43            let _ = $crate::log::LOGGER.log_debug(::core::convert::AsRef::<str>::as_ref(&$msg));
44        }
45    }};
46    ($($arg:tt)*) => {{
47        if $crate::log::LOGGER.is_raw_debug_enabled() {
48            let _ = $crate::log::LOGGER.log_debug(&format!($($arg)*));
49        }
50    }};
51}
52
53/// Log an informational message
54#[macro_export]
55macro_rules! log_info {
56    ($msg:expr) => {{
57        if $crate::log::LOGGER.is_debug_enabled() {
58            let _ = $crate::log::LOGGER.log_info(::core::convert::AsRef::<str>::as_ref(&$msg));
59        }
60    }};
61    ($($arg:tt)*) => {{
62        if $crate::log::LOGGER.is_debug_enabled() {
63            let _ = $crate::log::LOGGER.log_info(&format!($($arg)*));
64        }
65    }};
66}
67
68/// Log a warning message
69#[macro_export]
70macro_rules! log_warn {
71    ($msg:expr) => {{
72        if $crate::log::LOGGER.is_debug_enabled() {
73            let _ = $crate::log::LOGGER.log_warn(::core::convert::AsRef::<str>::as_ref(&$msg));
74        }
75    }};
76    ($($arg:tt)*) => {{
77        if $crate::log::LOGGER.is_debug_enabled() {
78            let _ = $crate::log::LOGGER.log_warn(&format!($($arg)*));
79        }
80    }};
81}
82
83/// Log an error message
84#[macro_export]
85macro_rules! log_error {
86    ($msg:expr) => {{
87        if $crate::log::LOGGER.is_debug_enabled() {
88            let _ = $crate::log::LOGGER.log_error(::core::convert::AsRef::<str>::as_ref(&$msg));
89        }
90    }};
91    ($($arg:tt)*) => {{
92        if $crate::log::LOGGER.is_debug_enabled() {
93            let _ = $crate::log::LOGGER.log_error(&format!($($arg)*));
94        }
95    }};
96}
97
98/// Log SSH session output
99#[macro_export]
100macro_rules! log_ssh {
101    ($($arg:tt)*) => {{
102        if $crate::log::LOGGER.is_ssh_logging_enabled() {
103            let _ = $crate::log::LOGGER.log_ssh(&format!($($arg)*));
104        }
105    }};
106}