diff options
author | Thomas Mühlbacher <tmuehlbacher@posteo.net> | 2024-07-19 21:34:15 +0200 |
---|---|---|
committer | Thomas Mühlbacher <tmuehlbacher@posteo.net> | 2024-07-21 01:16:28 +0200 |
commit | 09cde4869dec78c520333834c94bf929047ca839 (patch) | |
tree | cc443856293d6df765ee8aa9bb8f8a4fb1935f2a /src | |
parent | 48c51020e571455fa004be25371f85a39a945cad (diff) |
feat(logging): switch to custom file:line format
This mostly tries to be similar to the default `env_logger` format but
instead of using the more vague target in the log message, we instead
put the file name and line number in the log.
Signed-off-by: Thomas Mühlbacher <tmuehlbacher@posteo.net>
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(); } |