TreeLogger

Struct TreeLogger 

Source
pub struct TreeLogger { /* private fields */ }

Implementations§

Source§

impl TreeLogger

Source

pub fn new() -> TreeLogger

Initializes the global logger with a CustomLogger instance with default log level set to Level::Trace.

use tree_logger::TreeLogger;
TreeLogger::new().with_colors(true).with_threads(true).init().unwrap();
log::warn!("This is an example message.");
Examples found in repository?
examples/demo.rs (line 6)
5fn main() {
6    TreeLogger::new()
7        .with_colors(true)
8        .with_threads(true)
9        .with_filter_fn(|data| {
10            match data.elapsed {
11                // Filter out very quick events
12                Some(elapsed) => elapsed > 5,
13                None => true,
14            }
15        })
16        .init()
17        .unwrap();
18
19    profile!("Super quick event, will be filtered out", || {
20        info!("Can't see me");
21        info!("Can't see me");
22        info!("Can't see me");
23    });
24
25    warn!("Basic warning, not nested, shows up immediately");
26    let result = profile!("First span", || {
27        info!("Info inside a span. Doesn't print until the whole span is done");
28
29        thread::sleep(Duration::from_secs(2));
30
31        profile!("Child span #1", || {
32            info!("Info inside a child span #1");
33            thread::sleep(Duration::from_secs(1));
34        });
35
36        profile!("Child span #2", || {
37            info!("Info inside a child span #2");
38            thread::sleep(Duration::from_secs(1));
39        });
40
41        42 // Optionally we can return a value
42    });
43
44    info!("Profile returns a value: {result}");
45}
Source

pub fn init(self) -> Result<(), SetLoggerError>

Examples found in repository?
examples/demo.rs (line 16)
5fn main() {
6    TreeLogger::new()
7        .with_colors(true)
8        .with_threads(true)
9        .with_filter_fn(|data| {
10            match data.elapsed {
11                // Filter out very quick events
12                Some(elapsed) => elapsed > 5,
13                None => true,
14            }
15        })
16        .init()
17        .unwrap();
18
19    profile!("Super quick event, will be filtered out", || {
20        info!("Can't see me");
21        info!("Can't see me");
22        info!("Can't see me");
23    });
24
25    warn!("Basic warning, not nested, shows up immediately");
26    let result = profile!("First span", || {
27        info!("Info inside a span. Doesn't print until the whole span is done");
28
29        thread::sleep(Duration::from_secs(2));
30
31        profile!("Child span #1", || {
32            info!("Info inside a child span #1");
33            thread::sleep(Duration::from_secs(1));
34        });
35
36        profile!("Child span #2", || {
37            info!("Info inside a child span #2");
38            thread::sleep(Duration::from_secs(1));
39        });
40
41        42 // Optionally we can return a value
42    });
43
44    info!("Profile returns a value: {result}");
45}
Source

pub fn with_filter_fn(self, filter_fn: fn(&LoggingEvent) -> bool) -> TreeLogger

Examples found in repository?
examples/demo.rs (lines 9-15)
5fn main() {
6    TreeLogger::new()
7        .with_colors(true)
8        .with_threads(true)
9        .with_filter_fn(|data| {
10            match data.elapsed {
11                // Filter out very quick events
12                Some(elapsed) => elapsed > 5,
13                None => true,
14            }
15        })
16        .init()
17        .unwrap();
18
19    profile!("Super quick event, will be filtered out", || {
20        info!("Can't see me");
21        info!("Can't see me");
22        info!("Can't see me");
23    });
24
25    warn!("Basic warning, not nested, shows up immediately");
26    let result = profile!("First span", || {
27        info!("Info inside a span. Doesn't print until the whole span is done");
28
29        thread::sleep(Duration::from_secs(2));
30
31        profile!("Child span #1", || {
32            info!("Info inside a child span #1");
33            thread::sleep(Duration::from_secs(1));
34        });
35
36        profile!("Child span #2", || {
37            info!("Info inside a child span #2");
38            thread::sleep(Duration::from_secs(1));
39        });
40
41        42 // Optionally we can return a value
42    });
43
44    info!("Profile returns a value: {result}");
45}
Source

pub fn with_level(self, level: LevelFilter) -> TreeLogger

Source

pub fn with_threads(self, enable_threads: bool) -> TreeLogger

Examples found in repository?
examples/demo.rs (line 8)
5fn main() {
6    TreeLogger::new()
7        .with_colors(true)
8        .with_threads(true)
9        .with_filter_fn(|data| {
10            match data.elapsed {
11                // Filter out very quick events
12                Some(elapsed) => elapsed > 5,
13                None => true,
14            }
15        })
16        .init()
17        .unwrap();
18
19    profile!("Super quick event, will be filtered out", || {
20        info!("Can't see me");
21        info!("Can't see me");
22        info!("Can't see me");
23    });
24
25    warn!("Basic warning, not nested, shows up immediately");
26    let result = profile!("First span", || {
27        info!("Info inside a span. Doesn't print until the whole span is done");
28
29        thread::sleep(Duration::from_secs(2));
30
31        profile!("Child span #1", || {
32            info!("Info inside a child span #1");
33            thread::sleep(Duration::from_secs(1));
34        });
35
36        profile!("Child span #2", || {
37            info!("Info inside a child span #2");
38            thread::sleep(Duration::from_secs(1));
39        });
40
41        42 // Optionally we can return a value
42    });
43
44    info!("Profile returns a value: {result}");
45}
Source

pub fn with_colors(self, enable_colors: bool) -> TreeLogger

Control whether messages are colored or not.

Examples found in repository?
examples/demo.rs (line 7)
5fn main() {
6    TreeLogger::new()
7        .with_colors(true)
8        .with_threads(true)
9        .with_filter_fn(|data| {
10            match data.elapsed {
11                // Filter out very quick events
12                Some(elapsed) => elapsed > 5,
13                None => true,
14            }
15        })
16        .init()
17        .unwrap();
18
19    profile!("Super quick event, will be filtered out", || {
20        info!("Can't see me");
21        info!("Can't see me");
22        info!("Can't see me");
23    });
24
25    warn!("Basic warning, not nested, shows up immediately");
26    let result = profile!("First span", || {
27        info!("Info inside a span. Doesn't print until the whole span is done");
28
29        thread::sleep(Duration::from_secs(2));
30
31        profile!("Child span #1", || {
32            info!("Info inside a child span #1");
33            thread::sleep(Duration::from_secs(1));
34        });
35
36        profile!("Child span #2", || {
37            info!("Info inside a child span #2");
38            thread::sleep(Duration::from_secs(1));
39        });
40
41        42 // Optionally we can return a value
42    });
43
44    info!("Profile returns a value: {result}");
45}
Source

pub fn max_level(&self) -> LevelFilter

Trait Implementations§

Source§

impl Default for TreeLogger

Source§

fn default() -> Self

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

impl Log for TreeLogger

Source§

fn enabled(&self, metadata: &Metadata<'_>) -> bool

Determines if a log message with the specified metadata would be logged. Read more
Source§

fn log(&self, record: &Record<'_>)

Logs the Record. Read more
Source§

fn flush(&self)

Flushes any buffered records. 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>,

Source§

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>,

Source§

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.