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        .init()
10        .unwrap();
11
12    warn!("Basic warning, not nested, shows up immediately");
13    let result = profile!("First span", || {
14        info!("Info inside a span. Doesn't print until the whole span is done");
15
16        thread::sleep(Duration::from_secs(2));
17
18        profile!("Child span #1", || {
19            info!("Info inside a child span #1");
20            thread::sleep(Duration::from_secs(1));
21        });
22
23        profile!("Child span #2", || {
24            info!("Info inside a child span #2");
25            thread::sleep(Duration::from_secs(1));
26        });
27
28        42 // Optionally we can return a value
29    });
30
31    info!("Profile returns a value: {result}");
32}
Source

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

Examples found in repository?
examples/demo.rs (line 9)
5fn main() {
6    TreeLogger::new()
7        .with_colors(true)
8        .with_threads(true)
9        .init()
10        .unwrap();
11
12    warn!("Basic warning, not nested, shows up immediately");
13    let result = profile!("First span", || {
14        info!("Info inside a span. Doesn't print until the whole span is done");
15
16        thread::sleep(Duration::from_secs(2));
17
18        profile!("Child span #1", || {
19            info!("Info inside a child span #1");
20            thread::sleep(Duration::from_secs(1));
21        });
22
23        profile!("Child span #2", || {
24            info!("Info inside a child span #2");
25            thread::sleep(Duration::from_secs(1));
26        });
27
28        42 // Optionally we can return a value
29    });
30
31    info!("Profile returns a value: {result}");
32}
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        .init()
10        .unwrap();
11
12    warn!("Basic warning, not nested, shows up immediately");
13    let result = profile!("First span", || {
14        info!("Info inside a span. Doesn't print until the whole span is done");
15
16        thread::sleep(Duration::from_secs(2));
17
18        profile!("Child span #1", || {
19            info!("Info inside a child span #1");
20            thread::sleep(Duration::from_secs(1));
21        });
22
23        profile!("Child span #2", || {
24            info!("Info inside a child span #2");
25            thread::sleep(Duration::from_secs(1));
26        });
27
28        42 // Optionally we can return a value
29    });
30
31    info!("Profile returns a value: {result}");
32}
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        .init()
10        .unwrap();
11
12    warn!("Basic warning, not nested, shows up immediately");
13    let result = profile!("First span", || {
14        info!("Info inside a span. Doesn't print until the whole span is done");
15
16        thread::sleep(Duration::from_secs(2));
17
18        profile!("Child span #1", || {
19            info!("Info inside a child span #1");
20            thread::sleep(Duration::from_secs(1));
21        });
22
23        profile!("Child span #2", || {
24            info!("Info inside a child span #2");
25            thread::sleep(Duration::from_secs(1));
26        });
27
28        42 // Optionally we can return a value
29    });
30
31    info!("Profile returns a value: {result}");
32}
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.