3 个版本 (破坏性更新)
0.3.0 | 2021 年 2 月 22 日 |
---|---|
0.2.0 | 2019 年 2 月 7 日 |
0.1.0 | 2019 年 2 月 3 日 |
在 调试 中排名第 744
每月下载量 1,326
用于 10 个crate(3 个直接使用)
6KB
144 行
具有 NDC 功能的日志 crate 扩展
log-ndc
crate 提供一个日志记录器,它包装任意日志记录器,并将线程局部信息添加到每个日志消息的开头log-ndc-env-logger
是env_logger
crate 的一个非常简单的(10 行代码)直接替换/包装器
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
crate支持这个crate提供的基本线程局部上下文,那就对了。
依赖关系
~87KB