确定使用的 Serilog 富集剂

Determine Serilog Enrichers in Use

我正在尝试编写一系列自定义丰富器,其值在 运行 时动态设置。换句话说,他们不仅仅是从正在记录的环境中查找“静态”值。

为了完成这项工作,我需要能够确定给定的 Serilog 配置中存在哪些增强器,以便我可以向它们写入值。我一直无法找到一种方法来列出存在的浓缩剂。可以这样做吗?

如果有不同的方法可以将值动态注入管道,我很想听听。我已经使用 LogContext 构建了一些东西来做到这一点,但我希望能够简化事情(这就是为什么我正在考虑使用 enrichers)。

Serilog 没有提供在运行时获取已配置的 Enricher 列表的方法。您必须根据日志管道代码 and/or 读取配置设置,在应用程序启动时自行创建此列表。

或者,如果您真的想从实时 Serilog 配置中获取此信息,并且如果您同意它可能会在未来随着新 Serilog 版本的发布及其内部结构的变化而中断,您可以使用反射。

您可以看到一个通过反射获取 sinks 列表的示例:

Unit test Serilog configuration

获取 Enricher 列表是一种类似的方法。