在.NET 7和Serilog中配置日志级别

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

尝试弄清楚如何在 Microsoft

Ilogger
抽象下使用 Serilog。后者读取
"Logger"
appsetting.json
部分下的日志级别设置,而Serilog读取
"Serilog"
部分下的日志级别设置。很好。

但是他们如何一起工作?

如果我有使用 Microsoft

ILogger
抽象进行日志记录的代码,我会假设这些抽象将遵循
"Logger"
部分下的设置,并进一步受到
"Serilog"
部分下的设置的限制。 IE。假设这个应用程序设置。 json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Error"
    }
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information"
    }
  }
}

我希望

ILogger
事件被过滤为仅包括
Error
及以上,然后也过滤为仅
Information
及以上(在这种情况下这是无操作)。

但这不是我在测试中看到的。相反,

"Logging"
部分的级别设置似乎完全被忽略了。

我认为考虑到

ILogger
是一个接口,它在 Serilog 场景中是由某个使用 Serilog 进行日志记录的类实现的 - 没有执行 Microsoft 代码。

但我想做的是编写一个实用程序包,我们的应用程序可以利用它来直接记录到 ApplicationInsights 跟踪(避免在 C# 和配置中使用样板代码),并且我希望以这样的方式来实现: (尽可能)我们的应用程序仅“看到”Microsoft 日志记录抽象,即并没有真正意识到 util 包使用 Serilog。

但是,如果日志级别(和其他日志记录设置)必须位于

"Serilog"
中的
appsettings.json
部分下,并且还使用 Serilog 名称(
Verbose
Trace
MinimumLevel
LogLevel
...?),那么 Serilog 就必须“闪耀”,不是吗?

有什么方法可以让我在没有 Serilog“闪亮通过”的情况下做到这一点?

(注意:我需要使用 Serilog,因为 Microsoft 的 ApplicationInsights 提供程序不支持日志范围,而我们确实想使用它。至少根据当前文档。)

azure-application-insights serilog appsettings ilogger
1个回答
0
投票

Logging 配置完全由 Serilog 控制,这是我的配置方式,

{
 "Serilog": {
    "MinimumLevel": "Information",
    "Override": {
      "Microsoft.AspNetCore": "Warning"
    },
    "WriteTo": [
      {
        "Name": "Console"
      }
    ]
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.