Closed cody-why closed 2 weeks ago
@cody-why 是的,tklog暂时没有直接提供颜色属性的设置函数。
如果需要颜色输出,可以通过set_formatter 来修改各种属性的参数。以下是示例。使用 colored库修改日志的各种属性的颜色
[dependencies]
colored = "2"
tklog = "0.0.10"
示例程序
use std::{thread, time::Duration};
use colored::*;
use tklog::{
debug, error, fatal, info, trace, warn, LOG
};
fn log_init() {
let levelstr = "{level}".green().to_string(); //日志级别标识设置为绿色
let timestr = "{time}".yellow().to_string(); // 时间属性标识设置为黄色
let filestr = "{file}".red().to_string(); //文件属性标识设置为红色
let messagestr = ":{message}"; // 信息属性标识不修改颜色
let s = levelstr+×tr+&filestr+&messagestr+"\n";
LOG.set_formatter(s.as_str());
}
#[test]
fn testlog() {
log_init();
trace!(module_path!());
trace!("trace>>>>", "aaaaaaaaa", 1, 2, 3, 4);
debug!("debug>>>>", "bbbbbbbbb", 1, 2, 3, 5);
info!("info>>>>", "ccccccccc", 1, 2, 3, 5);
warn!("warn>>>>", "dddddddddd", 1, 2, 3, 6);
error!("error>>>>", "eeeeeeee", 1, 2, 3, 7);
fatal!("fatal>>>>", "ffffffff", 1, 2, 3, 8);
thread::sleep(Duration::from_secs(1))
}
这样就可以输出预定的颜色
如果需要设置不同日志级别的不同颜色输出,可以用set_level_option
函数 ,如下示例
[dependencies]
colored = "2"
tklog = "0.1.0"
示例程序
use colored::*;
use std::{thread, time::Duration};
use tklog::{debug, error, fatal, info, trace, warn, LevelOption, LOG};
#[test]
fn testlog4level() {
//设置LEVEL的fomatter
//Debug green
let debugfmt = format!("{} {} {} {}\n", "{level}".green(), "{time}".green(), "{file}".green(), ":{message}".green());
LOG.set_level_option(tklog::LEVEL::Debug, LevelOption { format: None, formatter: Some(debugfmt) });
//Info yellow
let infofmt = format!("{} {} {} {}\n", "{level}".yellow(), "{time}".yellow(), "{file}".yellow(), ":{message}".yellow());
LOG.set_level_option(tklog::LEVEL::Info, LevelOption { format: None, formatter: Some(infofmt) });
//Warn blue
let warnfmt = format!("{} {} {} {}\n", "{level}".blue(), "{time}".blue(), "{file}".blue(), ":{message}".blue());
LOG.set_level_option(tklog::LEVEL::Warn, LevelOption { format: None, formatter: Some(warnfmt) });
//Error red
let errorfmt = format!("{} {} {} {}\n", "{level}".red(), "{time}".red(), "{file}".red(), ":{message}".red());
LOG.set_level_option(tklog::LEVEL::Error, LevelOption { format: None, formatter: Some(errorfmt) });
trace!("trace>>>>", "aaaaaaaaa", 1, 2, 3, 4);
debug!("debug>>>>", "bbbbbbbbb", 1, 2, 3, 5);
info!("info>>>>", "ccccccccc", 1, 2, 3, 5);
warn!("warn>>>>", "dddddddddd", 1, 2, 3, 6);
error!("error>>>>", "eeeeeeee", 1, 2, 3, 7);
fatal!("fatal>>>>", "ffffffff", 1, 2, 3, 8);
thread::sleep(Duration::from_secs(1))
}
这样就可以自由的设置各种标识与日志级别的输出颜色
若同一行用相同颜色,可以简单一点, 如
//Debug green
LOG.set_level_option(tklog::LEVEL::Debug, LevelOption { format: None, formatter: Some("{level} {time} {file} :{message} \n".green().to_string()) });
谢谢解答
rt