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 在 调试 中
每月下载 1,666 次
34KB
458 行
NIH-log
专为满足 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