48 个版本
0.4.22 | 2024年6月28日 |
---|---|
0.4.21 | 2024年2月28日 |
0.4.20 | 2023年8月12日 |
0.4.19 | 2023年6月11日 |
0.1.5 | 2014年12月29日 |
#1 in 调试
12,327,378 每月下载量
用于 61,007 个 crate(18,218 个直接使用)
165KB
3K SLoC
log
提供轻量级日志门面的 Rust 库。
日志门面提供了一个抽象实际的日志实现的单一日志 API。库可以使用此 crate 提供的日志 API,而这些库的消费者可以选择最适合其用例的日志实现。
最低支持的 rustc
1.60.0+
此版本在 CI 中明确测试,根据需要可能在任何版本中提升。尽管保持与旧编译器的兼容性是优先事项,但提升最低支持版本的门槛设置得非常高。任何对最低支持版本的支持更改将在发行说明中说明。
使用方法
在库中
库应仅链接到 log
crate,并使用提供的宏记录对下游消费者有用的任何信息
[dependencies]
log = "0.4"
use log::{info, trace, warn};
pub fn shave_the_yak(yak: &mut Yak) {
trace!("Commencing yak shaving");
loop {
match find_a_razor() {
Ok(razor) => {
info!("Razor located: {razor}");
yak.shave(razor);
break;
}
Err(err) => {
warn!("Unable to locate a razor: {err}, retrying");
}
}
}
}
在可执行文件中
为了生成日志输出,可执行文件必须使用与门面兼容的日志实现。有多个可用的实现可供选择,以下是一些选项
- 简单的最小化日志记录器
- 复杂可配置的框架
- 其他设施的适配器
- 针对 WebAssembly 二进制文件
- 针对动态库
- 您可能需要在您的库中构造一个FFI 安全包装器来初始化
log
。
- 您可能需要在您的库中构造一个FFI 安全包装器来初始化
- 工具
可执行文件应该在程序运行时早期选择一个日志实现并初始化它。日志实现通常会包括一个用于此目的的函数。在日志实现初始化之前生成的任何日志消息都将被忽略。
可执行文件本身也可以使用 log
crate 来进行日志记录。
结构化日志
如果您启用了 kv
功能,您可以将结构化数据与您的日志记录相关联
use log::{info, trace, warn};
pub fn shave_the_yak(yak: &mut Yak) {
// `yak:serde` will capture `yak` using its `serde::Serialize` impl
//
// You could also use `:?` for `Debug`, or `:%` for `Display`. For a
// full list, see the `log` crate documentation
trace!(target = "yak_events", yak:serde; "Commencing yak shaving");
loop {
match find_a_razor() {
Ok(razor) => {
info!(razor; "Razor located");
yak.shave(razor);
break;
}
Err(e) => {
// `e:err` will capture `e` using its `std::error::Error` impl
warn!(e:err; "Unable to locate a razor, retrying");
}
}
}
}
依赖项
~0–265KB