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

Serilog - how to change logging granularity without code change

我想了解是否可以在生产环境中即时将日志记录级别从“调试”更改为“错误”。

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

 <level value="Info" />

这可以在 UAT 环境中即时更改以获得调试级别错误,然后过一会儿,我可以将其更改回信息。这只是一个配置更改,没有代码更改。

我们如何使用 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();

是否可以在不更改代码的情况下即时将最低级别更改为错误?

Serilog 有一个 XML app settings provider for App.config/Web.config, and a JSON configuration provider 用于 .NET Core 的配置子系统。

要使用 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();

您还可以添加配置条目以写入接收器、丰富属性等。请参阅上面提供者 link 处的完整文档。