Skip to main content

motorcortex_rust/
nng_logger.rs

1#[derive(Debug, Clone, Copy, PartialEq)]
2pub enum LogLevel {
3    None,
4    Debug,
5    Info,
6    Warn,
7    Error,
8}
9
10pub fn init_logger(log_level: LogLevel) {
11    // SAFETY: both NNG log functions mutate global logger state
12    // and take no caller-owned pointers. Idempotent and
13    // thread-safe per NNG docs.
14    unsafe {
15        nng_c_sys::nng_log_set_logger(Some(nng_c_sys::nng_stderr_logger));
16        match log_level {
17            LogLevel::None => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_NONE),
18            LogLevel::Debug => {
19                nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_DEBUG)
20            }
21            LogLevel::Info => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_INFO),
22            LogLevel::Warn => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_WARN),
23            LogLevel::Error => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_ERR),
24        };
25    }
26}
27
28pub fn init_debug_logger() {
29    init_logger(LogLevel::Debug);
30}