#slog #derive #logging #log #structured-log

slog_derive

用于与 slog 一起使用的自定义 derive

3 个不稳定版本

0.2.0 2019 年 10 月 12 日
0.1.1 2018 年 10 月 22 日
0.1.0 2018 年 2 月 14 日

调试 中排名第 574

Download history 6652/week @ 2023-11-20 7671/week @ 2023-11-27 6573/week @ 2023-12-04 7114/week @ 2023-12-11 5876/week @ 2023-12-18 2255/week @ 2023-12-25 3588/week @ 2024-01-01 5132/week @ 2024-01-08 5206/week @ 2024-01-15 5375/week @ 2024-01-22 5635/week @ 2024-01-29 6441/week @ 2024-02-05 6200/week @ 2024-02-12 8198/week @ 2024-02-19 8049/week @ 2024-02-26 8038/week @ 2024-03-04

每月下载量 30,720
6 个 Crates 中使用 (4 个直接使用)

MIT/Apache 许可协议

14KB
132

Slog Derives

Build Status Crates.io Link Online Documentation

用于与 slog 日志一起使用的自定义 derive。

KV Derive

有时你希望在应用程序中记录结构体的内容,例如在刚刚开始时记录配置详细信息以进行调试。通常你需要做些像这样的事情

#[macro_use]
extern crate slog;
use std::path::PathBuf;

struct Config {
    width: f64,
    height: f64,
    url: String,
}

let cfg = Config { ... };

debug!(logger, "Loaded Config";
    "width" => cfg.width,
    "height" => cfg.height,
    "url" => cfg.url);
# }

这就是 KV trait 发挥作用的地方。实现它让你可以以键值对的形式记录类型,将之前的日志语句转换为类似以下内容

debug!(logger, "Loaded Config"; cfg);

此 crate 提供了一个自定义 derive,它将为你实现 KV。它将遍历你的 struct 中的每个字段,并对每个字段调用 Value::serialize()。你还可以使用 #[slog]] 属性来跳过特定字段。

#[derive(KV)]
pub struct Config {
  width: f64,
  height: f64,
  #[slog(skip)]
  url: String,
}

许可证

许可协议为以下之一

由你选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交给作品的所有贡献,应如上所述双重授权,不附加任何额外条款或条件。

依赖关系

~1.5MB
~32K SLoC