pub struct Output(/* private fields */);
Expand description
Configuration for a logger output.
Implementations§
Source§impl Output
impl Output
Sourcepub fn file<T: Into<Cow<'static, str>>>(file: File, line_sep: T) -> Self
pub fn file<T: Into<Cow<'static, str>>>(file: File, line_sep: T) -> Self
Returns a file logger using a custom separator.
If the default separator of \n
is acceptable, an fs::File
instance can be passed into Dispatch::chain
directly.
fern::Dispatch::new().chain(std::fs::File::create("log")?)
fern::Dispatch::new().chain(fern::log_file("log")?)
Example usage (using fern::log_file
):
fern::Dispatch::new().chain(fern::Output::file(fern::log_file("log")?, "\r\n"))
Sourcepub fn writer<T: Into<Cow<'static, str>>>(
writer: Box<dyn Write + Send>,
line_sep: T,
) -> Self
pub fn writer<T: Into<Cow<'static, str>>>( writer: Box<dyn Write + Send>, line_sep: T, ) -> Self
Returns a logger using arbitrary write object and custom separator.
If the default separator of \n
is acceptable, an Box<Write + Send>
instance can be passed into Dispatch::chain
directly.
// Anything implementing 'Write' works.
let mut writer = std::io::Cursor::new(Vec::<u8>::new());
fern::Dispatch::new()
// as long as we explicitly cast into a type-erased Box
.chain(Box::new(writer) as Box<std::io::Write + Send>)
Example usage:
let writer = Box::new(std::io::Cursor::new(Vec::<u8>::new()));
fern::Dispatch::new().chain(fern::Output::writer(writer, "\r\n"))
Sourcepub fn stdout<T: Into<Cow<'static, str>>>(line_sep: T) -> Self
pub fn stdout<T: Into<Cow<'static, str>>>(line_sep: T) -> Self
Returns an stdout logger using a custom separator.
If the default separator of \n
is acceptable, an io::Stdout
instance can be passed into Dispatch::chain()
directly.
fern::Dispatch::new().chain(std::io::stdout())
Example usage:
fern::Dispatch::new()
// some unix tools use null bytes as message terminators so
// newlines in messages can be treated differently.
.chain(fern::Output::stdout("\0"))
Sourcepub fn stderr<T: Into<Cow<'static, str>>>(line_sep: T) -> Self
pub fn stderr<T: Into<Cow<'static, str>>>(line_sep: T) -> Self
Returns an stderr logger using a custom separator.
If the default separator of \n
is acceptable, an io::Stderr
instance can be passed into Dispatch::chain()
directly.
fern::Dispatch::new().chain(std::io::stderr())
Example usage:
fern::Dispatch::new().chain(fern::Output::stderr("\n\n\n"))
Sourcepub fn sender<T: Into<Cow<'static, str>>>(
sender: Sender<String>,
line_sep: T,
) -> Self
pub fn sender<T: Into<Cow<'static, str>>>( sender: Sender<String>, line_sep: T, ) -> Self
Returns a mpsc::Sender logger using a custom separator.
If the default separator of \n
is acceptable, an
mpsc::Sender<String>
instance can be passed into Dispatch:: chain()
directly.
Each log message will be suffixed with the separator, then sent as a single String to the given sender.
use std::sync::mpsc::channel;
let (tx, rx) = channel();
fern::Dispatch::new().chain(tx)
Sourcepub fn call<F>(func: F) -> Self
pub fn call<F>(func: F) -> Self
Returns a logger which simply calls the given function with each message.
The function will be called inline in the thread the log occurs on.
Example usage:
fern::Dispatch::new().chain(fern::Output::call(|record| {
// this is mundane, but you can do anything here.
println!("{}", record.args());
}))