Serilog - 如何在不更改代码的情况下更改日志记录粒度

时间:2017-03-15 02:38:27

标签: serilog

我想了解是否可以在生产环境中将日志记录级别从Debug更改为Error。

在Nlog中的实例中,配置文件中有一个位置,我可以在其中设置日志记录粒度。

 <level value="Info" />

这可以在UAT环境中动态更改以获得调试级别错误,然后一段时间后,我可以将其更改回INFO。这只是一个配置更改,没有代码更改。

我们如何使用Serilog处理类似的情况。

 Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.RollingFile("log-{Date}.txt")
.WriteTo.LiterateConsole(restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger();

如果我需要单独进行错误记录,那么我的配置将类似于

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Error()
.WriteTo.RollingFile("log-{Date}.txt")
.WriteTo.LiterateConsole(restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger();

是否可以在不进行代码更改的情况下将最低级别更改为“错误”?

1 个答案:

答案 0 :(得分:3)

Serilog的App.config / Web.configXML app settings provider,.NET Core的配置子系统为JSON configuration provider

要使用App.config / Web.config文件执行此操作,请先安装软件包:

Install-Package Serilog.Settings.AppSettings

在配置文件中向<appSettings>添加密钥:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="serilog:minimum-level" value="Debug" />

并在记录器配置时阅读:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.AppSettings()
    .WriteTo.RollingFile("log-{Date}.txt")
    .WriteTo.LiterateConsole(restrictedToMinimumLevel: LogEventLevel.Information)
    .CreateLogger();

您可以添加配置条目以写入接收器,丰富属性等。有关完整集,请参阅上面提供商链接中的文档。