#logging #log #env-var #log-messages #nih-plug

nih_log

一个具有见解且灵活的日志记录器,满足 NIH-plug 插件框架的需求

4 个版本 (2 个重大更改)

0.3.1 2023年4月24日
0.3.0 2023年3月21日
0.2.0 2023年3月1日
0.1.0 2023年3月1日

#443调试

Download history 429/week @ 2024-03-13 348/week @ 2024-03-20 308/week @ 2024-03-27 350/week @ 2024-04-03 339/week @ 2024-04-10 346/week @ 2024-04-17 276/week @ 2024-04-24 417/week @ 2024-05-01 444/week @ 2024-05-08 426/week @ 2024-05-15 728/week @ 2024-05-22 450/week @ 2024-05-29 385/week @ 2024-06-05 362/week @ 2024-06-12 466/week @ 2024-06-19 390/week @ 2024-06-26

每月下载 1,666

ISC 许可证

34KB
458

NIH-log

crates.io docs.rs

专为满足 log crate 的需求而制作的日志记录器,用于 NIH-plug 插件框架。

特性

  • 日志消息的格式类似于 simplelog。因为 simplelog 很棒。

  • 默认情况下,日志输出到 STDERR,除非附加了 Windows 调试器。在这种情况下,输出通过 OutputDebugString() 函数发送到 Windows 调试器。此检查在运行时执行,以适应调试器附加到已运行的进程。

  • 可以通过设置 NIH_LOG 环境变量来更改日志的输出目标

    • stderr 的值会导致日志打印到 STDERR。
    • windbg 的值会导致日志输出到 Windows 调试器。
    • 任何其他内容都被解释为文件名,这将导致日志写入该文件。

    后两种选项在 Windows 上很有用,因为在 Windows 上可能难以访问标准 IO 流。

  • 如果未设置 NIH_LOG,则使用动态日志输出目标。在 Windows 上,这会导致在附加调试器时将日志消息发送到 Windows 调试器。此检查是在打印消息之前完成的,以便将调试器附加到正在运行的进程。当调试器未附加时,输出直接发送到 STDERR。在非 Windows 平台上始终使用 STDERR。

  • (尚未实现) 在创建日志记录器之后,可以更改日志记录器的输出目标以输出到自定义函数。这使得在初始化日志记录器时无法使用的外部日志记录 API(如 CLAP 插件 API 的 日志扩展)集成成为可能。

    • 此API可以多次使用,例如,由多个从主机接收自己日志实例的CLAP插件实例。在这种情况下,所有注册的日志记录器都将在队列中跟踪,并使用第一个仍然活跃的日志记录器。
    • 如果显式设置了NIH_LOG,则将遵循该设置,而不会覆盖常规行为。
  • 由于NIH-log是为与NIH-plug一起使用而设计的,它默认只暴露最基本的自定义设置。唯一的配置选项是控制输出目标,并根据它们发送的crate和模块过滤日志消息。

  • 日志记录器本身不会尝试实现实时安全性。然而,它会尽可能提高性能。

    • 日志记录器还尝试检测来自同一线程的递归日志调用,在这种情况下,它将使用基于NIH_LOG环境变量的新日志记录器实例进行日志记录。这种非常具体的行为是使用assert_no_alloc的日志功能作为分配,同时写入日志记录器时(例如,因为缓冲区不够大,无法格式化日志记录器的所有文本)也应该使用日志记录器记录,但在此情况下,日志目标的互斥锁已经锁定。

依赖项

~0.8–42MB
~583K SLoC