使用appsettings.json覆盖特定接收器的serilog minimumlevel

问题描述 投票:2回答:1

在代码,xml和json中有“全局”覆盖MinimumLevel的文档。

但是我可以使用appsettings.json覆盖特定的接收器吗?例如,我想记录类MyClass的警告级别,但仅限于控制台接收器。

asp.net-core serilog asp.net-core-2.1
1个回答
1
投票

我也对这个问题感兴趣。我找不到解决方案。显然这不能在正确的情况下完成。它可以这样:

  1. 创建SERILOG的两个部分(Serilog和Serilog2或SerilogLow)
  2. 分别配置每个分区的最小日志记录级别
  3. 注册这两个部分。

项目清单

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    var logger = new LoggerConfiguration().ReadFrom.ConfigurationSection(_configuration.GetSection("Serilog"))
    .ReadFrom.ConfigurationSection(_configuration.GetSection("SerilogLow")).CreateLogger();
    services.AddSingleton<ILogger>(logger);
}

HTH


1
投票

只需在特定接收器的config部分中使用restrictedToMinimumLevel参数:

{
  /* .. */
  "Serilog": {
    "MinimumLevel": {
      "Default": "Verbose", /* <-- set the default level to the LOWEST applicable for your app  */
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "theme": "Serilog.Sinks.SystemConsole.Themes.SystemConsoleTheme::Literate, Serilog.Sinks.Console",
          "restrictedToMinimumLevel": "Information" /* <-- set the minimum level for specific sink  */
        }
      },
      {
        "Name": "File",
        "Args": {
          /* .. */
          "restrictedToMinimumLevel": "Warning" /* <-- set the minimum level for specific sink  */
        }
      },
      {
        "Name": "Udp",
        "Args": {
          /* .. */
          "restrictedToMinimumLevel": "Warning" /* <-- set the minimum level for specific sink  */
        }
      }
    ],
    /* .. */
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.