//! This module contains two traits which allow adding a stateful filter
//! using [`Logger::filter`](crate::Logger::filter).
//!
//! # Example
//!
//! ```rust
//! use flexi_logger::{
//! filter::{LogLineFilter, LogLineWriter},
//! DeferredNow, FlexiLoggerError,
//! };
//!
//! pub struct BarsOnly;
//! impl LogLineFilter for BarsOnly {
//! fn write(
//! &self,
//! now: &mut DeferredNow,
//! record: &log::Record,
//! log_line_writer: &dyn LogLineWriter,
//! ) -> std::io::Result<()> {
//! if record.args().to_string().contains("bar") {
//! log_line_writer.write(now, record)?;
//! }
//! Ok(())
//! }
//! }
//!
//! fn main() -> Result<(), FlexiLoggerError> {
//! flexi_logger::Logger::try_with_str("info")?
//! .filter(Box::new(BarsOnly))
//! .start()?;
//! log::info!("barista");
//! log::info!("foo"); // will be swallowed by the filter
//! log::info!("bar");
//! log::info!("gaga"); // will be swallowed by the filter
//! Ok(())
//! }
//! ```
use crate DeferredNow;
use Record;
/// Trait of the filter object.
/// Write out a single log line