Struct ringlog::RingLog

source ·
pub struct RingLog { /* private fields */ }
Expand description

A type which implements an asynchronous logging backend.

Implementations§

source§

impl RingLog

source

pub fn start(self) -> Box<dyn Drain>

Register the logger and return a type which implements Drain. It is up to the user to periodically call flush on the resulting drain.

Examples found in repository?
examples/demo-single.rs (line 14)
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
fn main() {
    let log = LogBuilder::new()
        .output(Box::new(Stdout::new()))
        .build()
        .expect("failed to initialize log");

    let mut drain = log.start();

    std::thread::spawn(move || loop {
        let _ = drain.flush();
        std::thread::sleep(Duration::from_millis(100));
    });

    error!("error");
    warn!("warning");
    info!("info");
    debug!("debug");
    trace!("trace");

    std::thread::sleep(Duration::from_millis(1000));
}
More examples
Hide additional examples
examples/demo-multi.rs (line 45)
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
fn main() {
    let default = LogBuilder::new()
        .output(Box::new(Stdout::new()))
        .build()
        .expect("failed to initialize default log");

    let command = LogBuilder::new()
        .output(Box::new(
            File::new("command.log", "command.old", 100).expect("failed to create file log"),
        ))
        .format(klog_format)
        .build()
        .expect("failed to initialize command log");

    let noplog = NopLogBuilder::new().build();

    let mut drain = MultiLogBuilder::new()
        .default(default)
        .add_target("command", command)
        .add_target("noplog", noplog)
        .build()
        .start();

    std::thread::spawn(move || loop {
        let _ = drain.flush();
        std::thread::sleep(Duration::from_millis(100));
    });

    error!("error");
    warn!("warning");
    info!("info");
    debug!("debug");
    trace!("trace");

    command!("\"get 0\" 0 0");

    noplog!("this won't get displayed");

    std::thread::sleep(Duration::from_millis(1000));
}

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.