Crate log_once [−] [src]
Collection of helper macros for logging some events only once.
This crate provide macro in the log_once
family (warn_once!
,
trace_once!
, ...); that only send a logging event once for every message.
It rely and uses the logging infrastructure in the log crate; and
is fully compatible with any logger implementation.
These macro will store the already seen messages in a static BTreeSet
, and
check if a message is in the set before sending the log event.
Examples
#[macro_use] extern crate log; #[macro_use] extern crate log_once; pub fn shave_the_yak(yaks: &[Yak]) { for yak in yaks { info!(target: "yak_events", "Commencing yak shaving for {:?}", yak); loop { match find_a_razor() { Ok(razor) => { // This will only appear once in the logger output for each razor info_once!("Razor located: {}", razor); yak.shave(razor); break; } Err(err) => { // This will only appear once in the logger output for each error warn_once!("Unable to locate a razor: {}, retrying", err); } } } } }
Macros
debug_once |
Logs a message once at the debug level. |
error_once |
Logs a message once at the error level. |
info_once |
Logs a message once at the info level. |
log_once |
Standard logging macro, logging events once for each arguments. |
trace_once |
Logs a message once at the trace level. |
warn_once |
Logs a message once at the warn level. |
Enums
Level |
An enum representing the available verbosity levels of the logger. |