summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Mühlbacher <tmuehlbacher@posteo.net>2024-07-19 21:34:15 +0200
committerThomas Mühlbacher <tmuehlbacher@posteo.net>2024-07-21 01:16:28 +0200
commit09cde4869dec78c520333834c94bf929047ca839 (patch)
treecc443856293d6df765ee8aa9bb8f8a4fb1935f2a /src
parent48c51020e571455fa004be25371f85a39a945cad (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.rs27
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();
}