Struct Logger

Source
pub struct Logger { /* private fields */ }
Expand description

The base logger builder/initializer.

§Examples

The following example shows basic initialization of this logger.

use bp3d_logger::Logger;
use log::info;
use log::LevelFilter;

fn main() {
    let _guard = Logger::new().add_stdout().add_file("my-app").start();
    log::set_max_level(LevelFilter::Info);
    //...
    info!("Example message");
}

The following example shows initialization of this logger with a return value.

use bp3d_logger::Logger;
use bp3d_logger::with_logger;
use log::info;
use log::LevelFilter;

fn main() {
    let code = with_logger(Logger::new().add_stdout().add_file("my-app"), || {
        log::set_max_level(LevelFilter::Info);
        //...
        info!("Example message");
        0
    });
    std::process::exit(code);
}

The following example shows initialization of this logger and use of the log buffer.

use bp3d_logger::Logger;
use log::info;
use log::LevelFilter;

fn main() {
    let _guard = Logger::new().add_stdout().add_file("my-app").start();
    log::set_max_level(LevelFilter::Info);
    bp3d_logger::enable_log_buffer(); // Enable log redirect pump into application channel.
    //... application code with log redirect pump.
    info!("Example message");
    let l = bp3d_logger::get_log_buffer().recv().unwrap();// Capture the last log message.
    println!("Last log message: {}", l.msg);
    bp3d_logger::disable_log_buffer();
    //... application code without log redirect pump.
}

Implementations§

Source§

impl Logger

Source

pub fn new() -> Logger

Creates a new instance of a logger builder.

Source

pub fn colors(self, state: Colors) -> Self

Sets the colors state when logging to stdout/stderr.

The default behavior is to disable colors.

Source

pub fn smart_stderr(self, flag: bool) -> Self

Enables or disables automatic redirection of error logs to stderr.

The default for this flag is true.

Source

pub fn add_stdout(self) -> Self

Enables stdout logging.

Source

pub fn add_file<T: GetLogs>(self, app: T) -> Self

Enables file logging to the given application.

The application is given as a reference to GetLogs to allow obtaining a log directory from various sources.

If the log directory could not be found the function prints an error to stderr.

Source

pub fn start(self) -> Guard

Initializes the log implementation with this current configuration.

NOTE: This returns a guard to flush all log buffers before returning. It is necessary to flush log buffers because this implementation uses threads to avoid blocking the main thread when issuing logs.

NOTE 2: There are no safety concerns with running twice this function in the same application, only that calling this function may be slow due to thread management.

Source

pub fn run<R, F: FnOnce() -> R>(self, f: F) -> R

👎Deprecated since 1.1.0: please use bp3d_logger::with_logger

Initializes the log implementation with this current configuration.

NOTE: Since version 1.1.0 this is a redirect to bp3d_logger::with_logger.

Trait Implementations§

Source§

impl Default for Logger

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl Freeze for Logger

§

impl RefUnwindSafe for Logger

§

impl Send for Logger

§

impl Sync for Logger

§

impl Unpin for Logger

§

impl UnwindSafe for Logger

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more