Динамический регистратор Steeltoe serilog не работает после перехода на Steeltoe 3.0

Я использовал Steeltoe 2.4.3 в своем приложении .net core 3.1. Недавно я обновил пакеты Steeltoe до версии v3.0.1, и похоже, что журналы не приходят в формате serilog. Я не могу понять, что не так. У меня есть конфигурация serilog в моих настройках приложения, как показано ниже.

  {
    "management": {
    "endpoints": {
      "path": "/myexample/cloudfoundryapplication",
      "cloudfoundry": {
        "validateCertificates": false
      },
      "actuator": {
        "exposure": {
          "include": [ "*" ],
          "exclude": [ "env", "refresh" ]
        }
      }
    }
  },

  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Information",
        "Steeltoe": "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" ]
  },
  "AllowedHosts": "*"
}

Program.cs, как показано ниже

    public static class Program
    {

        public static void Main(string[] args)
        {
            Activity.DefaultIdFormat = ActivityIdFormat.W3C;
            CreateHostBuilder(args).Build().Run();
        }
       
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .AddCloudFoundryConfiguration()
                .ConfigureLogging((builderContext, loggingBuilder) =>
                {
                    // Add Serilog Dynamic Logger 
                    loggingBuilder.AddDynamicSerilog();
                })
                .AddCloudFoundryActuators()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

Мой .csproj выглядит примерно так, как показано ниже.

<PropertyGroup>
   <TargetFramework>netcoreapp3.1</TargetFramework>
   <GenerateDocumentationFile>true</GenerateDocumentationFile>
 </PropertyGroup>

 <ItemGroup>
   <None Update="wwwroot\**\*;*.yml">
     <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
   </None>
 </ItemGroup>

 <ItemGroup>
   <PackageReference Include="Serilog.Sinks.Trace" Version="2.1.0" />
   <PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" />
   <PackageReference Include="Steeltoe.Extensions.Logging.DynamicSerilogCore" Version="3.0.1" />
   <PackageReference Include="Steeltoe.Management.CloudFoundryCore" Version="3.0.1" />
   <PackageReference Include="Steeltoe.Extensions.Configuration.CloudFoundryCore" Version="3.0.1" />
 </ItemGroup>

</Project>

person Sajan    schedule 30.10.2020    source источник


Ответы (1)


AddDynamicSerilog (в настоящее время) не добавляет приемник консоли, попробуйте обновить код, чтобы он выглядел следующим образом:

AddDynamicSerilog(new LoggerConfiguration().WriteTo.Console())

Этот PR приведет к автоматическому добавлению приемника консоли, если конфигурация не указана, и он, вероятно, будет поставляться в Steeltoe 3.0.2 (еще нет ETA)

person Tim    schedule 06.11.2020