Rust log 设置
2024-04-15 本文已影响0人
球果假水晶蓝
程序运行中,记录一些运行中关键信息,有助于开发者和使用者维护和使用。此外 我还想把关键信息再加上颜色。
[dependencies]
log = "0.4"
env_logger = "0.10"
colored = "2.0"
use colored::*;
use env_logger::{Builder, fmt::Target, LevelFilter};
use log::{info, log};
use std::io::Write;
fn main() {
// 初始化日志设置
Builder::new()
.format(|buf, record| {
let level = { buf.default_styled_level(record.level()) };
let mut style = buf.style();
style.set_bold(true);
writeln!(
buf,
"{}\t[{}]\t{}",
style.value(Local::now().format("%Y/%m/%d %H:%M:%S")),
level,
style.value(record.args())
)
})
.target(Target::Stdout)
.filter(None, LevelFilter::Debug)
.init();
// 创建日志消息,其中特定部分("three")被着色和加粗
let message = format!("This are {} message", "three".blue().bold());
info!("{}", message);
}
此外,我还看到了其他的写法,它借助chrono获取时间,colored库给字体加上颜色。
use chrono::prelude::*;
use colored::Colorize;
pub fn section_header(text: &str) {
colored::control::set_override(true);
let now = Local::now().format("%Y-%m-%d %H:%M:%S").to_string();
let date = format!("({})", now);
eprintln!();
eprintln!("{} {}", text.bold().bright_yellow().underline(), date.dimmed());
colored::control::unset_override();
}
pub fn explanation(text: &str) {
colored::control::set_override(true);
let mut term_width = 80;
if let Some((w, _)) = term_size::dimensions_stderr() {
term_width = w;
}
let indented_text = format!(" {}", text);
eprintln!("{}", textwrap::fill(&indented_text, term_width).dimmed());
eprintln!();
colored::control::unset_override();
}
//https://github.com/rrwick/Polypolish/blob/main/src/log.rs
此外,在Linux系统中,我习惯使用以下命令查看log信息,这样能看到彩色提示的信息。
less -SR log.file 来查看文件
image.png