Динамический регистратор Steeltoe Serilog не работает в приложении.net core 2.2

Я пытался использовать новый Steeltoe Serilog Dynamic Logger https://steeltoe.io/docs/steeltoe-logging/ в моем приложении.net core 2.2. Я использовал 2.3.0 версию пакета Steeltoe.Extensions.Logging.SerilogDynamicLogger. В моем program.cs у меня есть код ниже

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureAppConfiguration((hostContext, configApp) =>
                {
                    configApp.AddCloudFoundry();
                    configApp.AddConfigServer();
                })
                .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
                     .ReadFrom.Configuration(hostingContext.Configuration)
                     .WriteTo.Trace())
                .ConfigureLogging((builderContext, loggingBuilder) =>
                 {
                     loggingBuilder.ClearProviders();
                     loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));
                     // Add Serilog Dynamic Logger 
                     loggingBuilder.AddSerilogDynamicConsole();
                 });  

В приведенном выше блоке, прежде всего, я не знаю, почему

loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Вход"));

требуется, потому что он предназначен для настройки Microsoft ILogger, а Serilog не рекомендует такой параметр. В любом случае, у меня есть оба в моем appsettings.json

  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning",
      "System": "Warning",
      "Microsoft": "Warning"
    }
  },

  "Serilog": {
    "MinimumLevel": {
      "Default": "Information"
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
        }
      },
      {
        "Name": "Trace",
        "Args": {
          "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
        }
      }
    ],
    "Enrich": [ "FromLogContext" ]
  },

После развертывания на PCF, после нажатия кнопки "Настроить уровни ведения журнала", я мог видеть только 1/1 в разделе "Фильтры ведения журнала", также при изменении параметра "Регистрация по умолчанию" уровни ведения журнала не контролируются. Я использую PCF 2.4. Любые мысли о том, почему это не работает, будут полезны.

1 ответ

Я протестировал образец по адресу https://github.com/SteeltoeOSS/Samples/tree/master/Management/src/AspDotNetCore/CloudFoundry с 2.3.0 (в настоящее время он равен 2.3.0-rc2, что идентично). Это работает для меня с CF 2.6. Можете ли вы попробовать развернуть образец в вашей среде и убедиться, что конечная точка ведения журнала выглядит следующим образом:

в твоем клике беги cf logs <sample app name> | grep Test, Теперь настройте уровень регистрации Cloudfoundry.Controllers, посетите домашнюю страницу. Вы должны увидеть разницу в многословии журналов. Надеюсь, с этим вы можете сравнить и увидеть, где приложение / конфигурация отличается.

    ➜  CloudFoundry git:(2.x) ✗ cf logs actuator | grep Test
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Critical message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Error message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Warning message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Informational message
   2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT   Test Debug message

----- after adjusting ------

   2019-08-28T12:52:16.29-0400 [APP/PROC/WEB/0] OUT   Test Critical message
Другие вопросы по тегам