Struct ringlog::LogBuilder

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

A type to construct a basic RingLog which routes all log messages to a single Output.

Implementations§

source§

impl LogBuilder

source

pub fn new() -> Self

Create a new log builder.

Examples found in repository?
examples/demo-single.rs (line 9)
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 25)
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));
}
source

pub fn log_queue_depth(self, messages: usize) -> Self

Sets the depth of the log queue. Deeper queues are less likely to drop messages, but come at the cost of additional memory utilization.

source

pub fn single_message_size(self, bytes: usize) -> Self

Sets the buffer size for a single message. Oversized messages will result in an extra allocation, but keeping this small allows deeper queues for the same total buffer size without dropping log messages.

source

pub fn output(self, output: Box<dyn Output>) -> Self

Sets the output for the logger.

Examples found in repository?
examples/demo-single.rs (line 10)
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 26)
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));
}
source

pub fn format(self, format: FormatFunction) -> Self

Sets the format function to be used to format messages to this log.

Examples found in repository?
examples/demo-multi.rs (line 34)
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));
}
source

pub fn build(self) -> Result<RingLog, &'static str>

Consumes the builder and returns an RingLog.

Examples found in repository?
examples/demo-single.rs (line 11)
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 27)
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));
}

Trait Implementations§

source§

impl Default for LogBuilder

source§

fn default() -> Self

Returns the “default value” for a type. Read more

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.