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
上一篇下一篇

猜你喜欢

热点阅读