Записывает ли Serilog журнал автоматически при настройке на уровне журнала

#c# #logging #asp.net-core #serilog

#c# #ведение журнала #asp.net-core #serilog

Вопрос:

Я использую Serilog впервые и пытаюсь понять, как это работает. Я смотрю на образец ASP.Net Основное приложение, в котором настроен Serilog. Конфигурация serilog считывается из Appsettings.json:

 "Serilog": {
    "ApplicationName": "app-name",
    "Using": [ "Serilog.Sinks.File" ],
    "MinimumLevel": "Verbose",
    "WriteTo": [
        {
            "Name": "RollingFile",
            "Args": { "pathFormat": "log-{Date}.log" }
        }
    ]
}
  

Объект журнала определяется при запуске, а «AddSerilog» определяется в методе «ConfigureServices«. Но кроме этого никакой другой информации журнала не присутствует. Однако, когда я запускаю приложение, в каталоге решения автоматически создаются файлы журнала.

Вопрос в том, Serilog автоматически создает эти файлы журнала?

Комментарии:

1. Serilog создаст эти файлы журнала, если вы хотите записать журнал в эти файлы, вам нужно вызвать Log.Logger.Information("This is Info");

Ответ №1:

Вызов AddSerilog in ConfigureServices регистрирует поставщика ведения журнала в Microsoft ILoggingBuilder . Этот поставщик ( SerilogLoggerProvider ) реализует ILoggerProvider и его CreateLogger метод, который выглядит следующим образом:

 public ILogger CreateLogger(string name)
{
    return new SerilogLogger(this, _logger, name);
}
  

Из этого кода ясно, что Serilog SerilogLogger реализует интерфейс Microsoft ILogger .

Когда ASP.NET Core framework необходимо создать объект logger, он использует реализации ILoggerProvider для создания экземпляров ILogger путем вызова CreateLogger . При наличии зарегистрированного поставщика Serilog это приводит к ASP.NET Ядро запрашивает экземпляр ILogger и получает экземпляр SerilogLogger , который обеспечивает мост между ASP.NET Ядро и Serilog.

Сам приемник RollingFile автоматически создает настроенный файл журнала всякий раз, когда генерируется событие журнала, со своей собственной логикой для создания файлов с метками времени и т.д. Соответственно.