Skip to main content

vector_core/
macros.rs

1/// Log macros shared across all Vector clients.
2///
3/// `log_info!`, `log_debug!`, `log_trace!` compile to no-ops in release builds.
4/// `log_warn!` always prints with UTC timestamps (important for diagnostics).
5
6#[macro_export]
7macro_rules! log_info {
8    ($($arg:tt)*) => {{
9        #[cfg(debug_assertions)]
10        eprintln!("[INFO] {}", format_args!($($arg)*));
11    }};
12}
13
14#[macro_export]
15macro_rules! log_debug {
16    ($($arg:tt)*) => {{
17        #[cfg(debug_assertions)]
18        eprintln!("[DEBUG] {}", format_args!($($arg)*));
19    }};
20}
21
22#[macro_export]
23macro_rules! log_trace {
24    ($($arg:tt)*) => {{
25        #[cfg(debug_assertions)]
26        eprintln!("[TRACE] {}", format_args!($($arg)*));
27    }};
28}
29
30#[macro_export]
31macro_rules! log_warn {
32    ($($arg:tt)*) => {{
33        let _secs = std::time::SystemTime::now()
34            .duration_since(std::time::UNIX_EPOCH)
35            .unwrap_or_default()
36            .as_secs();
37        eprintln!("[WARN {:02}:{:02}:{:02}Z] {}", (_secs / 3600) % 24, (_secs / 60) % 60, _secs % 60, format_args!($($arg)*));
38    }};
39}