mod.rs |
Filtering for log records.
This module contains the log filtering used by `env_logger` to match records.
You can use the `Filter` type in your own logger implementation to use the same
filter parsing and matching as `env_logger`. For more details about the format
for directive strings see [Enabling Logging].
## Using `env_logger` in your own logger
You can use `env_logger`'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.
```
extern crate log;
extern crate env_logger;
use env_logger::filter::Filter;
use log::{Log, Metadata, Record};
struct MyLogger {
filter: Filter
}
impl MyLogger {
fn new() -> MyLogger {
use env_logger::filter::Builder;
let mut builder = Builder::new();
// Parse a directives string from an environment variable
if let Ok(ref filter) = std::env::var("MY_LOG_LEVEL") {
builder.parse(filter);
}
MyLogger {
filter: builder.build()
}
}
}
impl Log for MyLogger {
fn enabled(&self, metadata: &Metadata) -> bool {
self.filter.enabled(metadata)
}
fn log(&self, record: &Record) {
// Check if the record is matched by the filter
if self.filter.matches(record) {
println!("{:?}", record);
}
}
fn flush(&self) {}
}
```
[Enabling Logging]: ../index.html#enabling-logging
[`Builder::parse`]: struct.Builder.html#method.parse
[`Filter::matches`]: struct.Filter.html#method.matches |
30863 |
regex.rs |
|
536 |
string.rs |
|
429 |