facet_testhelpers/
lib.rs

1use facet_ansi::{ColorStyle, Style, Stylize};
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        // Create style based on log level
14        let level_style = match record.level() {
15            Level::Error => Style::new().with_red(),
16            Level::Warn => Style::new().with_yellow(),
17            Level::Info => Style::new().with_green(),
18            Level::Debug => Style::new().with_cyan(),
19            Level::Trace => Style::new().dimmed(),
20        };
21
22        // Convert level to styled display
23        let styled_level = record.level().style(level_style);
24
25        eprintln!(
26            "{} - {}: {}",
27            styled_level,
28            record.target().blue(),
29            record.args()
30        );
31    }
32
33    fn flush(&self) {
34        let _ = std::io::stderr().flush();
35    }
36}
37
38pub fn setup() {
39    #[cfg(not(miri))]
40    color_backtrace::install();
41    let logger = Box::new(SimpleLogger);
42    _ = log::set_boxed_logger(logger);
43    log::set_max_level(LevelFilter::Trace);
44}