syslog-rs 6.6.1

A native Rust implementation of the glibc/libc/windows syslog client and windows native log for logging.
Documentation
#![cfg(all(target_family = "windows", feature = "build_with_thread_local"))]
extern crate syslog_rs;

use std::{cell::RefCell, time::Instant};

use syslog_rs::{LogFacility, LogStat, Priority, SyStreamPriDebug, WindowsEvent, sync::syslog_threadlocal::SingleSyslog};

#[test]
fn test_thread_signalling()
{
    thread_local! 
    {
        // Could add pub to make it public to whatever Foo already is public to.
        static SYSLOG: RefCell<SingleSyslog> = 
            RefCell::new(SingleSyslog::openlog_with(Some("test"), LogStat::LOG_PID , 
                LogFacility::LOG_DAEMON, WindowsEvent::new()).unwrap());
    }

    let thread = 
        std::thread::spawn(move ||
            {
                for i in 0..10
                {
                    let fmms = format!("test message {} from thread {:?}", i, std::thread::current().name());
                    let s = Instant::now();

                    SYSLOG
                        .with_borrow_mut(|syslog| 
                            syslog
                                .syslog(
                                    Priority::LOG_ERR, 
                                    fmms.into()
                                )
                                .unwrap()
                        );

                    let e = s.elapsed();

                    println!("{:?}", e);
                }
            }
        );


    SYSLOG
        .with_borrow_mut(|syslog| 
            syslog
                .syslog(
                    Priority::LOG_DEBUG, 
                    format!("main test message from thread {:?}", std::thread::current().name()).into()
                )
                .unwrap()
        );


    thread.join().unwrap();

    return;

}

#[test]
fn test_single_stream_test()
{
    use std::fmt::Write;

    let log = 
            SingleSyslog::openlog(
                Some("test1"), 
                LogStat::LOG_CONS | LogStat::LOG_NDELAY | LogStat::LOG_PID, 
                LogFacility::LOG_DAEMON,
            WindowsEvent::new());

    assert_eq!(log.is_ok(), true, "{}", log.err().unwrap());

    let mut log = log.unwrap();
    
    write!(log.get_stream::<SyStreamPriDebug>(), "test stream singlesyslog").unwrap();

    for i in 0..3
    {
        let s = Instant::now();
        write!(log.get_stream::<SyStreamPriDebug>(), "test stream singlesyslog {}", i).unwrap();
        let e = s.elapsed();

        println!("{:?}", e);
    }

}