diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/logging.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/logging.rs b/src/logging.rs index 98ca091f..78c0d92d 100644 --- a/src/logging.rs +++ b/src/logging.rs @@ -1,5 +1,8 @@ +use std::io::Write; + use env_logger::WriteStyle; -use log::LevelFilter; +use log::{Level, LevelFilter}; +use owo_colors::{OwoColorize, Style}; pub fn setup(verbose: u8, color: bool) { let level_filter = match verbose { @@ -19,5 +22,27 @@ pub fn setup(verbose: u8, color: bool) { .filter_level(level_filter) .write_style(style) .parse_env("BCACHEFS_LOG") + .format(move |buf, record| { + let style = if style == WriteStyle::Never { + Style::new() + } else { + match record.level() { + Level::Trace => Style::new().cyan(), + Level::Debug => Style::new().blue(), + Level::Info => Style::new().green(), + Level::Warn => Style::new().yellow(), + Level::Error => Style::new().red().bold(), + } + }; + + writeln!( + buf, + "[{:<5} {}:{}] {}", + record.level().style(style), + record.file().unwrap(), + record.line().unwrap(), + record.args() + ) + }) .init(); } |