#env-logger #wrapper #wrap #extension #log-ndc

log-ndc-env-logger

非常简单的 log-ndc + env_logger 包装器

2个不稳定版本

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

#12 in #env-logger

Download history 17/week @ 2024-02-22 9/week @ 2024-02-29 2/week @ 2024-03-07 13/week @ 2024-03-14 11/week @ 2024-03-21 29/week @ 2024-03-28 19/week @ 2024-04-04

64 每月下载量
用于 grpc

MIT/Apache

9KB
194

具有类似NDC功能的日志crate扩展

Build Status License crates.io

  • 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