customlog/
root.rs

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}