Struct fern::Output [−][src]
pub struct Output(_);
Expand description
Configuration for a logger output.
Implementations
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"))
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"))
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"))
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"))
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)
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());
}))