3 个版本 (破坏性更新)

0.3.0 2021 年 2 月 22 日
0.2.0 2019 年 2 月 7 日
0.1.0 2019 年 2 月 3 日

调试 中排名第 744

Download history 222/week @ 2024-04-07 162/week @ 2024-04-14 229/week @ 2024-04-21 149/week @ 2024-04-28 166/week @ 2024-05-05 164/week @ 2024-05-12 137/week @ 2024-05-19 157/week @ 2024-05-26 138/week @ 2024-06-02 159/week @ 2024-06-09 252/week @ 2024-06-16 380/week @ 2024-06-23 311/week @ 2024-06-30 356/week @ 2024-07-07 317/week @ 2024-07-14 322/week @ 2024-07-21

每月下载量 1,326
用于 10crate(3 个直接使用)

MIT/Apache

6KB
144

具有 NDC 功能的日志 crate 扩展

Build Status License crates.io

  • log-ndc crate 提供一个日志记录器,它包装任意日志记录器,并将线程局部信息添加到每个日志消息的开头
  • log-ndc-env-loggerenv_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-mdc是一个类似的项目,它允许通过键存储线程局部数据。然而,log-mdc仅与某些记录器兼容,如log4rs。当使用例如env-logger时,无法获取在log-mdc中设置的线程局部信息。

我们应该去哪里?

我认为如果log crate支持这个crate提供的基本线程局部上下文,那就对了。

依赖关系

~87KB