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}