Struct ringlog::MultiLogBuilder
source · pub struct MultiLogBuilder { /* private fields */ }
Expand description
A type to construct a multi-target RingLog
which routes messages based
on the log’s target
metadata to a corresponding RingLog
. Targets which
do not match a specific target will be routed to the default RingLog
if
one is configured.
Implementations§
source§impl MultiLogBuilder
impl MultiLogBuilder
sourcepub fn new() -> Self
pub fn new() -> Self
Create a new MultiLog builder
Examples found in repository?
examples/demo-multi.rs (line 40)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
fn main() {
let default = LogBuilder::new()
.output(Box::new(Stdout::new()))
.build()
.expect("failed to initialize default log");
let command = LogBuilder::new()
.output(Box::new(
File::new("command.log", "command.old", 100).expect("failed to create file log"),
))
.format(klog_format)
.build()
.expect("failed to initialize command log");
let noplog = NopLogBuilder::new().build();
let mut drain = MultiLogBuilder::new()
.default(default)
.add_target("command", command)
.add_target("noplog", noplog)
.build()
.start();
std::thread::spawn(move || loop {
let _ = drain.flush();
std::thread::sleep(Duration::from_millis(100));
});
error!("error");
warn!("warning");
info!("info");
debug!("debug");
trace!("trace");
command!("\"get 0\" 0 0");
noplog!("this won't get displayed");
std::thread::sleep(Duration::from_millis(1000));
}
sourcepub fn default(self, log: RingLog) -> Self
pub fn default(self, log: RingLog) -> Self
Examples found in repository?
examples/demo-multi.rs (line 41)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
fn main() {
let default = LogBuilder::new()
.output(Box::new(Stdout::new()))
.build()
.expect("failed to initialize default log");
let command = LogBuilder::new()
.output(Box::new(
File::new("command.log", "command.old", 100).expect("failed to create file log"),
))
.format(klog_format)
.build()
.expect("failed to initialize command log");
let noplog = NopLogBuilder::new().build();
let mut drain = MultiLogBuilder::new()
.default(default)
.add_target("command", command)
.add_target("noplog", noplog)
.build()
.start();
std::thread::spawn(move || loop {
let _ = drain.flush();
std::thread::sleep(Duration::from_millis(100));
});
error!("error");
warn!("warning");
info!("info");
debug!("debug");
trace!("trace");
command!("\"get 0\" 0 0");
noplog!("this won't get displayed");
std::thread::sleep(Duration::from_millis(1000));
}
sourcepub fn add_target(self, target: &str, log: RingLog) -> Self
pub fn add_target(self, target: &str, log: RingLog) -> Self
Examples found in repository?
examples/demo-multi.rs (line 42)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
fn main() {
let default = LogBuilder::new()
.output(Box::new(Stdout::new()))
.build()
.expect("failed to initialize default log");
let command = LogBuilder::new()
.output(Box::new(
File::new("command.log", "command.old", 100).expect("failed to create file log"),
))
.format(klog_format)
.build()
.expect("failed to initialize command log");
let noplog = NopLogBuilder::new().build();
let mut drain = MultiLogBuilder::new()
.default(default)
.add_target("command", command)
.add_target("noplog", noplog)
.build()
.start();
std::thread::spawn(move || loop {
let _ = drain.flush();
std::thread::sleep(Duration::from_millis(100));
});
error!("error");
warn!("warning");
info!("info");
debug!("debug");
trace!("trace");
command!("\"get 0\" 0 0");
noplog!("this won't get displayed");
std::thread::sleep(Duration::from_millis(1000));
}
pub fn level_filter(self, level_filter: LevelFilter) -> Self
sourcepub fn build(self) -> RingLog
pub fn build(self) -> RingLog
Examples found in repository?
examples/demo-multi.rs (line 44)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
fn main() {
let default = LogBuilder::new()
.output(Box::new(Stdout::new()))
.build()
.expect("failed to initialize default log");
let command = LogBuilder::new()
.output(Box::new(
File::new("command.log", "command.old", 100).expect("failed to create file log"),
))
.format(klog_format)
.build()
.expect("failed to initialize command log");
let noplog = NopLogBuilder::new().build();
let mut drain = MultiLogBuilder::new()
.default(default)
.add_target("command", command)
.add_target("noplog", noplog)
.build()
.start();
std::thread::spawn(move || loop {
let _ = drain.flush();
std::thread::sleep(Duration::from_millis(100));
});
error!("error");
warn!("warning");
info!("info");
debug!("debug");
trace!("trace");
command!("\"get 0\" 0 0");
noplog!("this won't get displayed");
std::thread::sleep(Duration::from_millis(1000));
}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MultiLogBuilder
impl !RefUnwindSafe for MultiLogBuilder
impl Send for MultiLogBuilder
impl !Sync for MultiLogBuilder
impl Unpin for MultiLogBuilder
impl !UnwindSafe for MultiLogBuilder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more