我正在尝试在运行时实现日志级别切换。如果我从下面的代码配置它,使用SeriLog的LoggingLevelSwitch工作正常。
var levelSwitch = new LoggingLevelSwitch(LogEventLevel.Verbose);
var logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.MinimumLevel.ControlledBy(levelSwitch)
.CreateLogger();
logger.Verbose("This gets logged.");
levelSwitch.MinimumLevel = LogEventLevel.Warning;
logger.Verbose("This does not.");
现在我想将关卡开关配置移动到app.config,只在代码中留下new LoggerConfiguration().ReadFrom.AppSettings();
。在app.config中添加以下内容会限制级别,但在程序运行时我无法找到更改此方法的方法。
<add key="serilog:level-switch:$mySwitch" value="Warning" />
<add key="serilog:minimum-level:controlled-by" value="$mySwitch" />
我试过
ConfigurationManager.RefreshSection("appSettings");
(如果它重新阅读但需要一点激励)为了澄清,理想情况下我希望SeriLog自动重新读取配置并更新日志级别本身。获得内部开关的参考也是可以接受的;这样我就可以在app.config中保留开关设置,但是我必须创建一种机制,以便在更改时重新读取设置。
我想避免从代码中配置切换,并保持app.config设置与其他SeriLog设置的完成方式一致(即没有自定义app.config属性)。