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}