#env-var #log #logging #logger

env_filter

Filter log events using environment variables

1 unstable release

0.1.0 Jan 19, 2024

#194 in Debugging

Download history 80772/week @ 2024-02-01 101427/week @ 2024-02-08 106085/week @ 2024-02-15 105902/week @ 2024-02-22 144763/week @ 2024-02-29 152366/week @ 2024-03-07 185040/week @ 2024-03-14 193280/week @ 2024-03-21 189883/week @ 2024-03-28 236410/week @ 2024-04-04 233362/week @ 2024-04-11 238122/week @ 2024-04-18 230150/week @ 2024-04-25 237580/week @ 2024-05-02 235924/week @ 2024-05-09 195951/week @ 2024-05-16

938,659 downloads per month
Used in 1,283 crates (3 directly)

MIT/Apache

37KB
709 lines

env_filter

crates.io Documentation

Filter log events using environment variables


lib.rs:

Filtering for log records.

You can use the Filter type in your own logger implementation to use the same filter parsing and matching as env_logger.

Using env_filter in your own logger

You can use env_filter's filtering functionality with your own logger. Call Builder::parse to parse directives from a string when constructing your logger. Call Filter::matches to check whether a record should be logged based on the parsed filters when log records are received.

use env_filter::Filter;
use log::{Log, Metadata, Record};

struct PrintLogger;

impl Log for PrintLogger {
    fn enabled(&self, metadata: &Metadata) -> bool {
        true
    }

    fn log(&self, record: &Record) {
        println!("{:?}", record);
    }

    fn flush(&self) {}
}

let mut builder = env_filter::Builder::new();
// Parse a directives string from an environment variable
if let Ok(ref filter) = std::env::var("MY_LOG_LEVEL") {
    builder.parse(filter);
}

let logger = env_filter::FilteredLog::new(PrintLogger, builder.build());

Dependencies

~3–4MB
~69K SLoC