syslog-rs 7.0.1

A native Rust implementation of the glibc/libc/windows syslog client and windows native log for logging.
Documentation


use std::{sync::LazyLock};

use syslog_rs::formatters::DefaultSyslogFormatter;
use syslog_rs::{Syslog, SyQueued};
use syslog_rs::sync::DefaultQueueAdapter;
use syslog_rs::{LogFacility, LogStat, Priority};
use syslog_rs::AsyncSyslogQueueApi;

#[cfg(target_family = "unix")]
use syslog_rs::{SyslogLocal};

#[cfg(target_family = "windows")]
use syslog_rs::{WindowsEvent};

#[cfg(target_family = "unix")]
pub type DefaultLocalSyslogDestination = SyslogLocal;
#[cfg(target_family = "windows")]
pub type DefaultLocalSyslogDestination = WindowsEvent;

pub static SYSLOG: LazyLock<Syslog<DefaultSyslogFormatter, DefaultLocalSyslogDestination, SyQueued<DefaultQueueAdapter, DefaultSyslogFormatter, DefaultLocalSyslogDestination>>> = 
    LazyLock::new(|| 
        {
            #[cfg(target_family = "unix")]
            let syslog_provider = 
                SyslogLocal::new();

            #[cfg(target_family = "windows")]   
            let syslog_provider = 
                WindowsEvent::new();

            Syslog
                ::<_, _, SyQueued<DefaultQueueAdapter, _, _>>
                ::openlog_with(
                    Some("example_sync_async"), 
                    LogStat::LOG_CONS | LogStat::LOG_NDELAY | LogStat::LOG_PID, 
                    LogFacility::LOG_DAEMON,
                    syslog_provider
                )
                .unwrap()
        }
    );

macro_rules! logdebug 
{
    ($($arg:tt)*) => (
        SYSLOG.syslog(Priority::LOG_DEBUG, format!($($arg)*).into()).unwrap()
    )
}

macro_rules! alogdebug 
{
    ($($arg:tt)*) => (
        SYSLOG.a_syslog(Priority::LOG_DEBUG, format!($($arg)*).into()).await.unwrap()
    )
}

#[tokio::main]
async fn main()
{
    alogdebug!("message from async portion");

    let handle = 
        tokio
            ::task
            ::spawn_blocking(
                || 
                {
                    logdebug!("message from sync portion");
                }
            );

    handle.await.unwrap();

    return;
}