#[cfg(feature = "multi-thread")]
pub(crate) mod async_sink;
mod file_sink;
mod helper;
#[cfg(any(
all(target_os = "linux", feature = "native", feature = "libsystemd"),
all(doc, not(doctest))
))]
mod journald_sink;
mod rotating_file_sink;
mod std_stream_sink;
#[cfg(any(all(windows, feature = "native"), all(doc, not(doctest))))]
mod win_debug_sink;
mod write_sink;
#[cfg(feature = "multi-thread")]
pub use async_sink::*;
pub use file_sink::*;
#[cfg(any(
all(target_os = "linux", feature = "native", feature = "libsystemd"),
all(doc, not(doctest))
))]
pub use journald_sink::*;
pub use rotating_file_sink::*;
pub use std_stream_sink::*;
#[cfg(any(all(windows, feature = "native"), all(doc, not(doctest))))]
pub use win_debug_sink::*;
pub use write_sink::*;
use crate::{formatter::Formatter, sync::*, ErrorHandler, Level, LevelFilter, Record, Result};
pub trait Sink: Sync + Send {
#[must_use]
fn should_log(&self, level: Level) -> bool {
self.level_filter().compare(level)
}
fn log(&self, record: &Record) -> Result<()>;
fn flush(&self) -> Result<()>;
#[must_use]
fn level_filter(&self) -> LevelFilter;
fn set_level_filter(&self, level_filter: LevelFilter);
fn set_formatter(&self, formatter: Box<dyn Formatter>);
fn set_error_handler(&self, handler: Option<ErrorHandler>);
}
pub type Sinks = Vec<Arc<dyn Sink>>;