#tracing #env-logger #parser #env-filter

无 std parse-env-filter

解析 env logger 过滤器格式的解析器

1 个不稳定版本

0.1.0 2021 年 9 月 7 日

#2371解析器实现

Download history 307/week @ 2024-03-13 255/week @ 2024-03-20 249/week @ 2024-03-27 254/week @ 2024-04-03 343/week @ 2024-04-10 409/week @ 2024-04-17 367/week @ 2024-04-24 277/week @ 2024-05-01 352/week @ 2024-05-08 368/week @ 2024-05-15 329/week @ 2024-05-22 308/week @ 2024-05-29 287/week @ 2024-06-05 274/week @ 2024-06-12 545/week @ 2024-06-19 394/week @ 2024-06-26

每月 1,583 次下载

MIT/Apache

21KB
400

支持用于日志目标过滤器的解析,如 env_logger 和 tracing::EnvFilter 所使用的。

我们始终支持扩展的跟踪格式,即

target[span{field=value}]=level

以下有效性规则

  • 所有字段都是可选的,可以省略
  • 所有字段不得包含语法字符 []{}=,"/
    • 将来可能会放宽这些规则,以允许例如在 value 中匹配括号和/或引用值
  • 与 env_logger/tracing::EnvFilter 不同,我们将裸露的级别名称视为目标,而不是级别指令
    • 将此行为添加回去很简单——检查是否只设置了目标,如果是,则尝试将其作为级别

请注意,这些规则不会删除空白;你可能需要自己这样做。如果你想要进一步的验证,你可以在解析步骤之后添加它。这个 crate 的目的仅仅是为了从格式中提取指令,而不是确保指令在其它方面是良好格式化或有意义的。

不支持的功能

  • 与 tracing::EnvFilter 一样,解析是临时的,通常允许通过一些奇怪的边缘情况。我们选择严格,要求语法完全匹配,而不是宽松接受。
  • 同样,tracing 允许(有时甚至期望)在字段过滤器值中使用引号。引号目前被保留,以便将来可以添加允许在过滤器字段中包含语法字符的引号语法。
  • env_logger 支持一个全局 /regex 指令来通过正则表达式过滤消息。这分别应用于所有其他较早的指令,因此并不完全适合我们所采用的过滤器迭代器设计。然而,我们已经为清晰和这样的目的保留了 / 字符,以便将来可能添加具有此语法的过滤器字段。
  • tracing::EnvFilter 将 field=value 的值解释为正则表达式。我们明确将这种解释级别留给消费者,因为这个库只是用于解析。

无运行时依赖

功能