serilog - 如何记录“元”事件,例如最低级别更改?
问题描述
我想记录有关日志记录本身的元信息,例如最小 LogEventLevel 的更改。我可以用一些“元”属性标记它并赋予它“致命”级别。这是可行的,因为接收器和子记录器可以基于属性进行过滤,并且致命级别确保它始终传播到每个接收器,这样接收器可以选择记录元事件而不管当前的最小 LogEventLevel。
然而,明显的问题是,这使得这些日志事件显示为“致命”,这至少是误导,充其量是丑陋的。
解决方案
有两个独立的子记录器通道到同一个内部记录器,一个用于元事件,一个用于应用程序事件。
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();
推荐阅读
- ios - SwiftUI - NavigationView 标题和后退按钮在方向更改后剪辑在状态栏下
- node.js - 使用 Joi 模式获取具有模式中指定字段的 json 对象
- r - 在 R studio 中总结数据时遇到问题
- python - 如何在特殊字符周围使用 \b 边界
- python - 根据最近的小时和日期选择行
- sql-server - 找不到 SQL Server 配置管理器
- uuid - Laravel 8 Fortify 用户 UUID 登录问题
- reactjs - 在数组 React 中收集数组的唯一值
- amazon-web-services - AWS DynamoDB - 免费套餐混淆
- python - 使用颜色图图例绘制条形图