2个不稳定版本
0.3.0 | 2021年2月22日 |
---|---|
0.2.0 | 2019年2月7日 |
#12 in #env-logger
64 每月下载量
用于 grpc
9KB
194 行
具有类似NDC功能的日志crate扩展
log-ndc
crate提供一个日志记录器,它包装任意日志记录器,并在每个日志消息前添加线程局部信息log-ndc-env-logger
是一个非常简单的(10行代码)的env_logger
crate的替换包装器/包装器
log-ndc
此crate允许设置一个线程局部变量,该变量将被添加到日志消息前。
log_ndc::set_boxed_logger(logger)
使用 log_ndc::Logger
包装传递的 logger
对象,并调用底层的 log::set_boxed_logger(..)
。
log_ndc
函数类似于 log_ndc::set(..)
或 log_ndc::push(..)
,它们替换包装器日志中后来添加到日志消息中的线程局部文本。
// works exactly like regular `warn!` macro with any logger
// `warn!` is a macro from `log` library
warn!("something happened");
// set thread-local information like request id
log_ndc::set(format!("reqid={}", 10));
info!("starting request");
// outputs
// INFO 2019-02-03T23:51:26Z: mycrate: [reqid=10] starting request
log-ndc-env-logger
env_logger
crate的替换包装器。
它简单初始化 env_logger
包装器,并用 log_ndc::Logger
包装它。
此crate非常简单,请查看 单个文件源。
常见问题解答
(我认为这些是常见问题解答,但是还没有人向我提问过。)
NDC是什么意思?
“NDC”一词来自 log4j,意为“嵌套诊断上下文”。
它与 log
crate或我喜欢的后端兼容吗?
是的,log-ndc
包装日志后端并将其委托给 log
crate。
因此,所有像 warn!(..)
这样的宏应该像以前一样工作。
另见 log-mdc
- log-mdc 是一个类似的项目,它允许通过键存储线程局部数据。然而,log-mdc 只与某些日志记录器(如 log4rs)兼容。当使用
env-logger
等工具时,无法获取在log-mdc
中设置的线程局部信息。
我们该去哪里呢?
我认为如果 log
包支持基本线程局部上下文,就像在这个包中提供的那样,那将是正确的。
依赖关系
~3–13MB
~117K SLoC