Настроить ведение журнала через файл конфигурации в. NET Core - PullRequest
0 голосов
/ 13 января 2020

Мы пытаемся настроить ведение журнала для нашего ASP. NET Базового приложения через файл конфигурации (настройки приложения по умолчанию. json). Документ гласит, что это возможно (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1), но мы не можем заставить его работать так, как ожидалось.

То, что мы пробовали до сих пор:

  • оставить код, как он есть в шаблоне проекта для ASP. NET Core и просто изменить настройки приложения. json => без эффекта
  • явно добавить настройки приложения. json как файл конфигурации и настроить ведение журнала в Program.cs => вообще не вести запись
    public static IHostBuilder CreateHostBuilder (string[] args) =>
        Host.CreateDefaultBuilder (args)
            .ConfigureAppConfiguration ((hostingContext, config) =>
            {
              config.Sources.Clear ();

              var env = hostingContext.HostingEnvironment;

              config.AddJsonFile ("appsettings.json", optional: false, reloadOnChange: true)
                    .AddJsonFile ($"appsettings.{env.EnvironmentName}.json",
                        optional: true, reloadOnChange: true);

              config.AddEnvironmentVariables ();
            })
            .ConfigureLogging ((hostingContext, logging) =>
            {
              logging.ClearProviders ();

              logging.AddConfiguration (hostingContext.Configuration.GetSection ("Logging"));
            })
            .ConfigureWebHostDefaults (webBuilder =>
             {
               webBuilder.UseStartup<Startup> ();
             });
  • ... настроить ведение журнала в Startup.ConfigureServices => без эффекта
    public void ConfigureServices (IServiceCollection services)
    {
      services.AddLogging (config => config.AddConfiguration (Configuration.GetSection("Logging")));
      services.AddControllers ();
    }

1 Ответ

1 голос
/ 13 января 2020

Вы неправильно поняли. Вы можете настроить ведение журнала, то есть уровни журналов для каждого поставщика, отфильтровывать сообщения и т. Д. c., Но фактические поставщики должны быть назначены в коде. Другими словами, вы можете настроить, какие сообщения go для консоли через config, но вы все равно должны вызвать logging.AddConsole() в ConfigureLogging, чтобы добавить этого провайдера.

Код, который вы удаляете, удаляет всех провайдеров по умолчанию и ничего не добавляет, так что вообще нет никаких провайдеров, и, следовательно, журналы не создаются. Вы не можете добавить провайдеров через конфигурацию, просто настройте провайдеров, которые были добавлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...