Struct simplelog::CombinedLogger
source · pub struct CombinedLogger { /* private fields */ }
Expand description
The CombinedLogger struct. Provides a Logger implementation that proxies multiple Loggers as one.
The purpose is to allow multiple Loggers to be set globally
Implementations§
source§impl CombinedLogger
impl CombinedLogger
sourcepub fn init(logger: Vec<Box<dyn SharedLogger>>) -> Result<(), SetLoggerError>
pub fn init(logger: Vec<Box<dyn SharedLogger>>) -> Result<(), SetLoggerError>
init function. Globally initializes the CombinedLogger as the one and only used log facility.
Takes all used Loggers as a Vector argument. None of those Loggers should already be set globally.
All loggers need to implement log::Log
and logger::SharedLogger
and need to provide a way to be
initialized without calling set_logger
. All loggers of this library provide a `new(..)`` method
for that purpose.
Fails if another logger is already set globally.
§Examples
let _ = CombinedLogger::init(
vec![
TermLogger::new(LevelFilter::Info, Config::default(), TerminalMode::Mixed, ColorChoice::Auto),
WriteLogger::new(LevelFilter::Info, Config::default(), File::create("my_rust_bin.log").unwrap())
]
);
Examples found in repository?
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
fn main() {
CombinedLogger::init(vec![
#[cfg(feature = "termcolor")]
TermLogger::new(
LevelFilter::Warn,
Config::default(),
TerminalMode::Mixed,
ColorChoice::Auto,
),
#[cfg(not(feature = "termcolor"))]
SimpleLogger::new(LevelFilter::Warn, Config::default()),
WriteLogger::new(
LevelFilter::Info,
Config::default(),
File::create("my_rust_binary.log").unwrap(),
),
])
.unwrap();
error!("Bright red error");
info!("This only appears in the log file");
debug!("This level is currently not enabled for any logger");
}
sourcepub fn new(logger: Vec<Box<dyn SharedLogger>>) -> Box<CombinedLogger>
pub fn new(logger: Vec<Box<dyn SharedLogger>>) -> Box<CombinedLogger>
allows to create a new logger, that can be independently used, no matter whats globally set.
no macros are provided for this case and you probably
dont want to use this function, but init()
, if you dont want to build a CombinedLogger
.
Takes all used loggers as a Vector argument. The log level is automatically determined by the lowest log level used by the given loggers.
All loggers need to implement log::Log.
§Examples
let combined_logger = CombinedLogger::new(
vec![
TermLogger::new(LevelFilter::Debug, Config::default(), TerminalMode::Mixed, ColorChoice::Auto),
WriteLogger::new(LevelFilter::Info, Config::default(), File::create("my_rust_bin.log").unwrap())
]
);