syd 3.54.1

rock-solid application kernel
Documentation
//
// Syd: rock-solid application kernel
// src/log/macros.rs: Logging macros
//
// Copyright (c) 2023, 2024, 2025, 2026 Ali Polatel <alip@chesswob.org>
//
// SPDX-License-Identifier: GPL-3.0

/// Formatted print which returns Result as Errno.
#[macro_export]
macro_rules! printf {
    () => {{}};
    ($($arg:tt)*) => {{
        use ::std::io::Write as _;
        let __s = format!($($arg)*);
        ::std::io::stdout().write_all(__s.as_bytes())
            .map_err(|error| $crate::err::err2no(&error))
    }};
}

/// Formatted println which returns Result as Errno.
#[macro_export]
macro_rules! printfln {
    () => {{
        use ::std::io::Write as _;
        ::std::io::stdout().write_all(b"\n")
            .map_err(|error| $crate::err::err2no(&error))
    }};
    ($($arg:tt)*) => {{
        use ::std::io::Write as _;
        let mut __s = format!($($arg)*);
        __s.push('\n');
        ::std::io::stdout().write_all(__s.as_bytes())
            .map_err(|error| $crate::err::err2no(&error))
    }};
}

#[doc(hidden)]
#[macro_export]
macro_rules! log_impl {
    ($level:expr, $($key:literal : $value:expr),+) => {
        if $crate::log_enabled!($level) {
            let timestamp = $crate::log::now();
            let mut map = $crate::log::LogMap::new();
            $(
                if let Ok(value) = $crate::log::LogValue::try_serialize(&$value) {
                    let _ = map.try_insert($key, value);
                }
            )+
            if !map.is_empty() {
                $crate::log::log($level, timestamp, map);
            }
        }
    }
}

/// emerg! logging macro
#[macro_export]
macro_rules! emerg {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Emergent, $($key : $value),+)
    }
}

/// alert! logging macro
#[macro_export]
macro_rules! alert {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Alert, $($key : $value),+)
    }
}

/// crit! logging macro
#[macro_export]
macro_rules! crit {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Crit, $($key : $value),+)
    }
}

/// error! logging macro
#[macro_export]
macro_rules! error {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Err, $($key : $value),+)
    }
}

/// warn! logging macro
#[macro_export]
macro_rules! warn {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Warn, $($key : $value),+)
    }
}

/// notice! logging macro
#[macro_export]
macro_rules! notice {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Notice, $($key : $value),+)
    }
}

/// info! logging macro
#[macro_export]
macro_rules! info {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Info, $($key : $value),+)
    }
}

/// debug! logging macro
#[macro_export]
macro_rules! debug {
    ($($key:literal : $value:expr),+) => {
        $crate::log_impl!($crate::syslog::LogLevel::Debug, $($key : $value),+)
    }
}