【问题标题】:asp.net core Logging not following the ConfigurationBuilder hierarchyasp.net 核心日志记录不遵循 ConfigurationBuilder 层次结构
【发布时间】:2019-12-31 16:03:27
【问题描述】:

我正在尝试配置 asp.net 核心应用程序的日志级别。我在我的 Startup 类中设置了这个 ConfigurationBuilder。

         var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile("ConfigFiles/appsettings.configs.json", optional: true, reloadOnChange: true)
            .AddEnvironmentVariables();

        Configuration = builder.Build();

然后即使我在“ConfigFiles/appsettings.configs.json”文件中配置了 LogLevel,如下所示:

  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  }

它只是被忽略了。相反,无论如何,它总是直接从“appsettings.json”(根文件)读取。 我什至尝试注释掉配置它的代码行,令人惊讶的是它仍然从那里读取。我知道这是因为我故意在 LogLevel 配置中插入了一个错误,它会引发错误。 对于其他配置,它可以正常工作,从两个文件中读取。看起来“记录”机制静态指向根 appsettings.json 文件。 如何让它从另一个文件而不是根目录中读取?

谢谢

编辑: 框架版本:.net Core 3.0

【问题讨论】:

    标签: c# asp.net-core .net-core


    【解决方案1】:

    来自docs

    AddJsonFile 在你初始化一个新的 带有CreateDefaultBuilder 的主机生成器。调用该方法从以下位置加载配置:

    appsettings.json - 首先读取此文件。该文件的环境版本可以覆盖 appsettings.json 文件提供的值。

    appsettings.{Environment}.json – 根据 IHostingEnvironment.EnvironmentName 加载文件的环境版本。

    有两个配置文件 appsettings.jsonappsettings.Development.json 覆盖基本 appsettings.json 文件中的设置。并且系统在开发模式下使用它。您可以更改appsettings.Development.json 文件中的默认日志级别。

    【讨论】:

    • OP 没有打电话给CreateDefaultBuilder,所以这个答案完全无关紧要。
    • 如果我在“appsettings.Development.json”文件中更改它确实可以工作,但这不是我的意思,因为这意味着它仍然从“根”文件中读取。我需要它工作的方式,我需要从作为子文件夹的文件中读取它。对于我迄今为止尝试过的所有内容,看起来这是 Logging 组件中的一个错误,即从根目录读取,而不是使用已完成的配置
    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2013-12-29
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多