【发布时间】:2021-08-16 11:53:57
【问题描述】:
Serilog.Settings.Configuration 包支持将 Microsoft ILogger 配置设置与 Serilog 一起使用。
"Console": {
"LogLevel": {
"Default": "Debug"
}
},
映射到这个(如果我理解正确的话)
.MinimumLevel.Override("Console", LogEventLevel.Debug)
.WriteTo.Console()
我编写了一个用于 MQTT 的自定义接收器。构造接收器的扩展方法需要参数。一个并不能真正表达为字符串。
.WriteTo.MqttSink(managedMqttClientObject, "name of application emitting logs")
我想将Serilog.Settings.Configuration 与我的自定义接收器结合使用,但可以就如何最好地解决这个问题提出建议。
目前的想法
- 代码显式搜索配置值以确定是否要使用 MqttSink,如果是,则配置并应用它
- 将参数设为sink类的静态属性,提供使用静态属性的无参数工厂方法,并在调用
.ReadFrom.Configuration(config)之前编组它们的值
我也可以这样做
var loggerFactory = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.WriteTo.MqttSink(managedMqttClient, "log source name");
但我不确定当Serilog.Settings.Configuration 找不到无参数工厂方法MqttSink 时会发生什么。如果有比静态属性方法更好的方法,我非常感谢您的指导。
【问题讨论】:
标签: c# .net-core serilog mqttnet