Skip to main content

flashkraft_core/utils/
logger.rs

1//! Debug Logging Utilities
2//!
3//! Centralized logging macros and utilities for FlashKraft.
4//! All debug logging is conditionally compiled and only active in debug builds.
5
6/// Debug logging macro for general application messages
7///
8/// Only prints in debug builds. Automatically prefixes with `\[DEBUG\]`.
9///
10/// # Example
11/// ```no_run
12/// # use flashkraft_core::debug_log;
13/// let path = "/path/to/image.iso";
14/// debug_log!("User selected image: {}", path);
15/// ```
16#[macro_export]
17macro_rules! debug_log {
18    ($($arg:tt)*) => {
19        #[cfg(debug_assertions)]
20        eprintln!("[DEBUG] {}", format!($($arg)*));
21    };
22}
23
24/// Debug logging macro for flash subscription messages
25///
26/// Only prints in debug builds. Automatically prefixes with `\[FLASH_DEBUG\]`.
27///
28/// # Example
29/// ```no_run
30/// # use flashkraft_core::flash_debug;
31/// let progress = 0.75;
32/// flash_debug!("Progress: {:.1}%", progress * 100.0);
33/// ```
34#[macro_export]
35macro_rules! flash_debug {
36    ($($arg:tt)*) => {
37        #[cfg(debug_assertions)]
38        eprintln!("[FLASH_DEBUG] {}", format!($($arg)*));
39    };
40}
41
42/// Debug logging macro for status messages
43///
44/// Only prints in debug builds. Automatically prefixes with `\[STATUS\]`.
45///
46/// # Example
47/// ```no_run
48/// # use flashkraft_core::status_log;
49/// status_log!("Starting flash operation");
50/// ```
51#[macro_export]
52macro_rules! status_log {
53    ($($arg:tt)*) => {
54        #[cfg(debug_assertions)]
55        eprintln!("[STATUS] {}", format!($($arg)*));
56    };
57}
58
59/// Conditional debug logging - only logs if condition is true
60///
61/// # Example
62/// ```no_run
63/// # use flashkraft_core::debug_if;
64/// let verbose_mode = true;
65/// let data = vec![1, 2, 3];
66/// debug_if!(verbose_mode, "Detailed info: {:?}", data);
67/// ```
68#[macro_export]
69macro_rules! debug_if {
70    ($condition:expr, $($arg:tt)*) => {
71        #[cfg(debug_assertions)]
72        if $condition {
73            eprintln!("[DEBUG] {}", format!($($arg)*));
74        }
75    };
76}
77
78#[cfg(test)]
79mod tests {
80    #[test]
81    fn test_debug_macros_compile() {
82        // These should compile without errors
83        debug_log!("Test message");
84        flash_debug!("Flash test: {}", 42);
85        status_log!("Status test");
86        debug_if!(true, "Conditional test");
87    }
88}