facet_testhelpers/
lib.rs

1use facet_ansi::{Style, Stylize as _};
2use log::{Level, LevelFilter, Log, Metadata, Record};
3use std::io::Write;
4
5struct SimpleLogger;
6
7impl Log for SimpleLogger {
8    fn enabled(&self, _metadata: &Metadata) -> bool {
9        true
10    }
11
12    fn log(&self, record: &Record) {
13        let style = match record.level() {
14            Level::Error => Style::new().red(),
15            Level::Warn => Style::new().yellow(),
16            Level::Info => Style::new().green(),
17            Level::Debug => Style::new().cyan(),
18            Level::Trace => Style::new().dimmed(),
19        };
20
21        eprintln!(
22            "{} - {}: {}",
23            record.level().style(style),
24            record.target().blue(),
25            record.args()
26        );
27    }
28
29    fn flush(&self) {
30        let _ = std::io::stderr().flush();
31    }
32}
33
34pub fn setup() {
35    #[cfg(not(miri))]
36    color_backtrace::install();
37    let logger = Box::new(SimpleLogger);
38    log::set_boxed_logger(logger).unwrap();
39    log::set_max_level(LevelFilter::Trace);
40}