Serilog 动态丰富上下文

Serilog Dynamically enrich a context

是否有可能在 Serilog 中动态覆盖或扩展日志模板?

我有一个解析器 class,它逐行解析 XML,我想用行号扩展日志条目。我已经写了一个 enricher 来做到这一点,但我必须在函数开始时全局覆盖默认记录器并在结束时重置它,这甚至很难看(从编程的角度来看):D

Serilog 还有哪些其他选项,或者我错过了什么?

经过更多挖掘,我终于找到了适合我需要的解决方案。

我使用 LogContext.PushProperty 机制来推送 XmlReader(或者更确切地说是包装器对象,因为与解构的类型匹配是精确的,并且 XmlReader 是一个工厂 returns 许多不同的 类) 到 LogContext 中,并向 LoggerConfiguration 添加了自定义解构以检测该包装类型的对象,然后根据我的喜好对其进行格式化。