Serilog ILogger Provider не отвечает на конфигурацию - PullRequest
0 голосов
/ 05 июля 2019

Я использую Serilog в качестве поставщика для Microsoft.Extension.Logging, я не хочу, чтобы он взял на себя все управление журналированием. Однако Serilog не отвечает на конфигурацию. Я не соблюдаю уровни по умолчанию и уровень по умолчанию для своего собственного псевдонима поставщика "Serilog".

Пакеты

<PackageReference Include="Serilog.Extensions.Logging" Version="2.0.4" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Debug" Version="1.0.1" />

Program.cs

    public static void Main(string[] args)
{
    Log.Logger = new LoggerConfiguration()
        .WriteTo.Console(outputTemplate: "{Timestamp:HH:mm:ss.fff} [{Level:u3}] {SourceContext} - {Message:lj}{NewLine}{Exception}")
        .WriteTo.Debug()
        .CreateLogger();

    BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseApplicationInsights()
        .UseStartup<Startup>()
        .ConfigureLogging(logging =>
        {
            logging.AddSerilog(dispose: true);
        })
        .Build();

appsettings.json

 "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Serilog": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }

1 Ответ

0 голосов
/ 06 июля 2019

Вызов logging.AddSerilog(dispose: true); также добавляет фильтр с уровнем Trace, который переопределяет конфигурацию ведения журнала. Добавьте провайдера Serilog вручную и настройте Serilog с минимальным уровнем Verbose, при этом вы можете забыть о конфигурации этой ужасной жадной библиотеки и использовать ее так же, как любого другого провайдера журналирования.

Program.cs

    public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseApplicationInsights()
            .UseStartup<Startup>()
            .ConfigureLogging((builderContext, logging) =>
            {
                var logger = new LoggerConfiguration()
                    .MinimumLevel.Verbose()
                    .WriteTo.Console(outputTemplate: "[{Level:w4} {Timestamp:HH:mm:ss.fff} {SourceContext}]{NewLine}      {Message:lj}{NewLine}{Exception}")
                    .WriteTo.Debug(outputTemplate: "[{Timestamp:HH:mm:ss.fff} {SourceContext} {Level:u3}] {Message:lj}{NewLine}{Exception}")
                    .CreateLogger();
                logging.Services.AddSingleton<ILoggerProvider, SerilogLoggerProvider>(services => new SerilogLoggerProvider(logger, true));
            })
            .Build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...