控制台日志记录的选项和配置 - 它在源代码中如何工作?

Options and Configuration for console logging - how does it work in source code?

我正在尝试实现我自己的自定义记录器。我一直在看微软的Console Logger的实现。

您可以像这样在 AppSettings 中配置 ConsoleLoggerOptions

{
  "Logging": {
    "IncludeScopes": true,
    "LogLevel": {
      "Default": "Information",
      "System": "Warning",
      "Microsoft": "Warning",
    },
    "Console": {
      "DisableColors": true
    }
}

查看 AddConsole() 扩展:https://github.com/dotnet/extensions/blob/master/src/Logging/Logging.Console/src/ConsoleLoggerFactoryExtensions.cs#L18

选项的内部工作原理是什么?它在哪里 "bind" 它与 'Console',它从哪里从 ConsoleLoggerOptions 到 Console?

说到这里我就不明白了。只需将选项添加到服务即可 'works'?

所以我挖得更深一点:

ConsoleLoggerProvider 有一个提供者别名,将其重命名为 "Console": https://github.com/dotnet/extensions/blob/master/src/Logging/Logging.Console/src/ConsoleLoggerProvider.cs#L14

并根据别名添加配置: https://github.com/dotnet/extensions/blob/55518d79834d3319c91f40b449d028338b129ed6/src/Logging/Logging.Configuration/src/LoggerProviderConfigurationFactory.cs#L27

imo 隐藏得很好