Serilog ReadFrom Конфигурация - PullRequest
       24

Serilog ReadFrom Конфигурация

0 голосов
/ 31 августа 2018

Я пытаюсь загрузить свою конфигурацию Serilog из appsettings.json, используя пререлизный пакет NuGet Serilog.Settings.Configuration. Однако, когда я загружаю его с помощью Configuration.GetSection, значение продолжает возвращаться как ноль.

Вот что у меня в файле Program.cs:

return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(
    (hostingContext, loggingBuilder) =>
    {
        loggingBuilder.ClearProviders();
        loggingBuilder.AddSerilog(
            new LoggerConfiguration()
                .ReadFrom.ConfigurationSection(hostingContext.Configuration.GetSection("Serilog"))
                .CreateLogger()
        );
    }
);

Вот что у меня в файле appsettings.json:

{
"Serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer" ],
    "MinimumLevel": {
        "Default": "Verbose",
        "Override": {
            "Microsoft": "Verbose",
            "System": "Verbose",
            "Microsoft.AspNetCore.Authentication": "Verbose"
        }
    },
    "WriteTo": [
        {
            "Name": "MSSqlServer",
            "Args": {
                "connectionString": "*my_connectionString*",
                "tableName": "ErrorLog"
            }
        }
    ]
}}

Установленные пакеты NuGet:

  • Microsoft.AspNetCore.App v2.1.1
  • Serilog v2.7.1
  • Serilog.AspNetCore v2.1.1
  • Serilog.Extensions.Logging v2.0.2
  • Serilog.Settings.Configuration v3.0.0-dev-00119
  • Serilog.Sinks.MSSqlServer v5.1.2

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Я настроил так

     public static void Main(string[] args)
     {
        var _config = new ConfigurationBuilder()
                    .AddJsonFile("loggerconfig.json")//mantained separate 
     config file.
                    .Build();
        Log.Logger = new LoggerConfiguration()
                    .ReadFrom.Configuration(_config)
                    .CreateLogger();
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseSerilog()
            .UseStartup<Startup>();

и это лучший способ, согласно Serilog.

0 голосов
/ 31 августа 2018

Я настраиваю это так:

return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
                .ReadFrom.Configuration(hostingContext.Configuration))
            .Build();

по умолчанию Serilog искать Serilog раздел в конфигурации

...