Merge branch 'master' into 'master'
Replace custom logging with log crate and custom format See merge request crystal/programs/jade!2axtloss/rework-partitioning
commit
9541bfb0ea
@ -0,0 +1,72 @@
|
|||||||
|
use crate::uwu;
|
||||||
|
use flexi_logger::{style, DeferredNow, LogSpecification, Logger};
|
||||||
|
use lazy_static::lazy_static;
|
||||||
|
use log::{Level, LevelFilter};
|
||||||
|
use std::env;
|
||||||
|
use std::io::Write;
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref UWU: bool = env::var("JADE_UWU").map(|v| v == "true").unwrap_or(false);
|
||||||
|
static ref UWU_DEBUG: bool = env::var("JADE_UWU_DEBUG")
|
||||||
|
.map(|v| v == "true")
|
||||||
|
.unwrap_or(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn init(verbosity: usize) {
|
||||||
|
let log_specification = match verbosity {
|
||||||
|
0 => LogSpecification::builder()
|
||||||
|
.default(LevelFilter::Info)
|
||||||
|
.build(),
|
||||||
|
1 => LogSpecification::builder()
|
||||||
|
.default(LevelFilter::Debug)
|
||||||
|
.build(),
|
||||||
|
_ => LogSpecification::builder()
|
||||||
|
.default(LevelFilter::Trace)
|
||||||
|
.build(),
|
||||||
|
};
|
||||||
|
Logger::with(log_specification)
|
||||||
|
.format(format_log_entry)
|
||||||
|
.start()
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Formats a log entry with color
|
||||||
|
fn format_log_entry(
|
||||||
|
w: &mut dyn Write,
|
||||||
|
now: &mut DeferredNow,
|
||||||
|
record: &log::Record,
|
||||||
|
) -> std::io::Result<()> {
|
||||||
|
let msg = record.args().to_string();
|
||||||
|
let level = record.level();
|
||||||
|
let msg = apply_uwu(level, msg);
|
||||||
|
let (h, m, s) = now.now().time().as_hms();
|
||||||
|
write!(
|
||||||
|
w,
|
||||||
|
"[ {} ] {}:{}:{} {}",
|
||||||
|
style(level).paint(level.to_string()),
|
||||||
|
h,
|
||||||
|
m,
|
||||||
|
s,
|
||||||
|
msg
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Applies uwu if the required environment variables are set
|
||||||
|
fn apply_uwu(level: Level, msg: String) -> String {
|
||||||
|
match level {
|
||||||
|
Level::Error | Level::Warn | Level::Info => {
|
||||||
|
if *UWU {
|
||||||
|
uwu!(msg)
|
||||||
|
} else {
|
||||||
|
msg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Level::Debug | Level::Trace => {
|
||||||
|
if *UWU_DEBUG {
|
||||||
|
uwu!(msg)
|
||||||
|
} else {
|
||||||
|
msg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue