首页 > 其他分享 >.Netcore IOptions<LoggerFilterOptions> 获取的顺序

.Netcore IOptions<LoggerFilterOptions> 获取的顺序

时间:2022-11-04 14:01:00浏览次数:74  
标签:Information 顺序 配置文件 Netcore IOptions 这个 key path Microsoft

.net core 配置文件的日志级别 :

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Trace",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
}

IOptions<LoggerFilterOptions>  这个会读取这个节点。

然而用的时候发现,这个节点下的 key 会自动排序,也就是 Microsoft.Hosting.Lifetime 一直是第一个,调整配置文件的顺序也没用。

这当然用起来方便。

然而 这个源码,并没有排序。

这个加的时候,用 一个 AsEnumable() 方法

获取 GetChilderen()  在这儿执行。

这会指向这个方法:GetChildrenImplementation

这里又有 

IEnumerable<IConfigurationSection> children = providers
                .Aggregate(Enumerable.Empty<string>(),
                    (seed, source) => source.GetChildKeys(seed, path))
                .Distinct(StringComparer.OrdinalIgnoreCase)
                .Select(key => root.GetSection(path == null ? key : ConfigurationPath.Combine(path, key)));
GetChildKeys 这个方法的实现在这儿
这个方法 的最后 有个 results.Sort(ConfigurationKeyComparer.Comparison);
 


 

标签:Information,顺序,配置文件,Netcore,IOptions,这个,key,path,Microsoft
From: https://www.cnblogs.com/qgbo/p/16857524.html

相关文章