如何记录'meta'事件,例如最低级别更改?



我想记录关于日志记录本身的元信息,例如最小LogEventLevel的变化。我可以用一些"元"标记它;并赋予它"致命"的程度。这是有效的,因为接收器和子记录器可以基于属性进行过滤,并且致命级别确保它始终传播到每个接收器,这样接收器可以选择记录元事件,而不管当前的最小LogEventLevel是多少。

然而,明显的问题是,这使得这些日志事件显示为"fatal",这至少是误导,充其量是丑陋的。

为同一个内部日志记录器设置两个独立的子日志记录器通道,一个用于元事件,一个用于应用程序事件。

internal static ILogger _applicationLogger;
internal static ILogger _metaLogger;
internal static ILogger _innerLogger;

应用程序记录器可以有电平开关,而元记录器保持不变。

_innerLogger = myconfig.CreateLogger();
_metaLogger = new LoggerConfiguration()
.WriteTo.Logger(_innerLogger)
.CreateLogger();
_applicationLogger = new LoggerConfiguration()
.MinimumLevel.ControlledBy(LogLevelSwitch)
.WriteTo.Logger(_innerLogger)
.CreateLogger();

一种方法是创建一个接收器包装器,该包装器检查是否存在meta属性,并在进行更改之前将日志级别从Fatal修改为最合适的级别,以满足目标接收器的最低级别。例如:https://stackoverflow.com/a/68854607/211672

最新更新