Struct ringlog::LogBuilder
source · pub struct LogBuilder { /* private fields */ }
Expand description
A type to construct a basic RingLog
which routes all log messages to a
single Output
.
Implementations§
source§impl LogBuilder
impl LogBuilder
sourcepub fn new() -> Self
pub fn new() -> Self
Create a new log builder.
Examples found in repository?
examples/demo-single.rs (line 9)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
fn main() {
let log = LogBuilder::new()
.output(Box::new(Stdout::new()))
.build()
.expect("failed to initialize log");
let mut drain = log.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");
std::thread::sleep(Duration::from_millis(1000));
}
More examples
examples/demo-multi.rs (line 25)
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 log_queue_depth(self, messages: usize) -> Self
pub fn log_queue_depth(self, messages: usize) -> Self
Sets the depth of the log queue. Deeper queues are less likely to drop messages, but come at the cost of additional memory utilization.
sourcepub fn single_message_size(self, bytes: usize) -> Self
pub fn single_message_size(self, bytes: usize) -> Self
Sets the buffer size for a single message. Oversized messages will result in an extra allocation, but keeping this small allows deeper queues for the same total buffer size without dropping log messages.
sourcepub fn output(self, output: Box<dyn Output>) -> Self
pub fn output(self, output: Box<dyn Output>) -> Self
Sets the output for the logger.
Examples found in repository?
examples/demo-single.rs (line 10)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
fn main() {
let log = LogBuilder::new()
.output(Box::new(Stdout::new()))
.build()
.expect("failed to initialize log");
let mut drain = log.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");
std::thread::sleep(Duration::from_millis(1000));
}
More examples
examples/demo-multi.rs (line 26)
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 format(self, format: FormatFunction) -> Self
pub fn format(self, format: FormatFunction) -> Self
Sets the format function to be used to format messages to this log.
Examples found in repository?
examples/demo-multi.rs (line 34)
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 build(self) -> Result<RingLog, &'static str>
pub fn build(self) -> Result<RingLog, &'static str>
Consumes the builder and returns an RingLog
.
Examples found in repository?
examples/demo-single.rs (line 11)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
fn main() {
let log = LogBuilder::new()
.output(Box::new(Stdout::new()))
.build()
.expect("failed to initialize log");
let mut drain = log.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");
std::thread::sleep(Duration::from_millis(1000));
}
More examples
examples/demo-multi.rs (line 27)
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 LogBuilder
impl !RefUnwindSafe for LogBuilder
impl Send for LogBuilder
impl Sync for LogBuilder
impl Unpin for LogBuilder
impl !UnwindSafe for LogBuilder
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