4 个版本
0.2.1 | 2020年1月26日 |
---|---|
0.2.0 | 2020年1月3日 |
0.1.1 | 2019年12月4日 |
0.1.0 | 2019年12月3日 |
#494 in 调试
在 libgtp 中使用
9KB
111 代码行
scrub_log
一个带有默认颜色、文件名、行号和程序运行时间的日志格式化工具。
使用方法
将此代码包添加到 Cargo.toml
[dependencies]
scrub_log = "0.1.1"
现在你可以轻松地为所有 printf 调试需求打印出漂亮的日志行,类似于 glog 风格。
use log::{debug, error, info, trace, warn};
fn main() {
scrub_log::init().unwrap();
trace!("Lorem ipsum");
debug!("dolor sit amet,");
info!("consectetur adipiscing elit,");
warn!("ed do eiusmod");
error!("tempor incididunt");
}
示例输出
TRACE]15.464µs [log_example:10] Lorem ipsum
DEBUG]42.350µs [log_example:11] dolor sit amet,
INFO ]45.667µs [log_example:12] consectetur adipiscing elit,
WARN ]48.431µs [log_example:13] ed do eiusmod
ERROR]50.754µs [log_example:14] tempor incididunt
过滤器
此库导入了 env_logger
的过滤器功能,因此可以很容易地以相同格式添加过滤器字符串。
一个方便的方法是使用命令行标志而不是环境变量。例如,使用 gflags
库
use log::{debug, error, info, trace, warn};
gflags::define! {
--log_filter: &str = "log_example=info"
}
fn main() {
gflags::parse();
scrub_log::init_with_filter_string(LOG_FILTER.flag).unwrap();
trace!("Lorem ipsum");
debug!("dolor sit amet,");
info!("consectetur adipiscing elit,");
warn!("ed do eiusmod");
error!("tempor incididunt");
}
这允许根据需要请求不同的日志级别,默认为
$ cargo run --example log_example -- --log_filter warn
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/examples/log_example --log_filter warn`
WARN ]11.740µs [log_example:13] ed do eiusmod
ERROR]44.914µs [log_example:14] tempor incididunt
$ cargo run --example log_example -- --log_filter log_example=debug
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/examples/log_example --log_filter log_example=debug`
DEBUG]14.542µs [log_example:11] dolor sit amet,
INFO ]42.239µs [log_example:12] consectetur adipiscing elit,
WARN ]45.890µs [log_example:13] ed do eiusmod
ERROR]48.758µs [log_example:14] tempor incididunt
请参阅 env_logger
文档以获取过滤器字符串的精确规范,但通常它是 $global_log_level
或 $module1_name=$module1_log_level,$module2_name=$module2_log_level
。
默认日志级别,从 env_logger
继承,是 warn
。这可以通过指定过滤器字符串来更改,例如
scrub_log::init_with_filter_string("trace").unwrap();
依赖项
~3–11MB
~103K SLoC