Skip to main content

rust_raknet/
log.rs

1use std::sync::atomic::{AtomicU8, Ordering};
2
3pub static ENABLE_RAKNET_LOG: AtomicU8 = AtomicU8::new(0);
4
5/// Sets the log categories to print.
6///
7/// Bit 0 enables debug logs, bit 1 enables errors, and bit 2 enables info logs.
8pub fn enable_raknet_log(flag: u8) {
9    ENABLE_RAKNET_LOG.store(flag, Ordering::Relaxed);
10}
11
12/// Print a debug log when debug logging is enabled.
13#[macro_export]
14macro_rules! raknet_log_debug {
15    ($($arg:tt)*) => ({
16        if $crate::log::ENABLE_RAKNET_LOG.load(std::sync::atomic::Ordering::Relaxed) & 1 != 0 {
17            let now = $crate::utils::cur_timestamp_millis();
18            println!("debug - {now} - raknet - {}", format_args!($($arg)*));
19        }
20    })
21}
22
23/// Print an error log when error logging is enabled.
24#[macro_export]
25macro_rules! raknet_log_error {
26    ($($arg:tt)*) => ({
27        if $crate::log::ENABLE_RAKNET_LOG.load(std::sync::atomic::Ordering::Relaxed) & 2 != 0 {
28            let now = $crate::utils::cur_timestamp_millis();
29            eprintln!("error - {now} - raknet - {}", format_args!($($arg)*));
30        }
31    })
32}
33
34/// Print an info log when info logging is enabled.
35#[macro_export]
36macro_rules! raknet_log_info {
37    ($($arg:tt)*) => ({
38        if $crate::log::ENABLE_RAKNET_LOG.load(std::sync::atomic::Ordering::Relaxed) & 4 != 0 {
39            let now = $crate::utils::cur_timestamp_millis();
40            println!("info - {now} - raknet - {}", format_args!($($arg)*));
41        }
42    })
43}