1use log::{Log, Metadata};
2
3pub(super) struct RootLogger {
4 inner: Vec<Box<dyn Log>>,
5}
6
7impl RootLogger {
8 pub(super) fn new(loggers: Vec<Box<dyn Log>>) -> Self {
9 Self { inner: loggers }
10 }
11}
12
13impl Log for RootLogger {
14 fn enabled(&self, metadata: &Metadata) -> bool {
15 self.inner.iter().any(|logger| logger.enabled(metadata))
16 }
17
18 fn log(&self, record: &log::Record) {
19 if !self.enabled(record.metadata()) {
20 return;
21 }
22 for logger in &self.inner {
23 logger.log(record);
24 }
25 }
26
27 fn flush(&self) {
28 for logger in &self.inner {
29 logger.flush();
30 }
31 }
32}