Замена ILoggerFactory по умолчанию на Serilog¶
Попробуем заменить дефолтную реализацию интерфейса ILoggerFactory на реализацию, использующую Serilog.
Для того, чтобы использовать Serilog, заменим ILoggerFactory на специальную реализацию, содержащую одного поставщика, SerilogLoggerProvider. И уже этот поставщик будет записывать во все получатели данных Serilog.
Добавим одного получателя данных для записи в консоль. Для этого:
- добавим все необходимые NuGet-пакеты;
- создаем и конфигурируем логгер Serilog;
- заменяем реализацию
ILoggerFactoryнаSerilogLoggerFactory, используя методUseSerilog().
Первый шаг: добавим пакеты:
Далее конфигурируем Serilog и заменяем
ILoggerFactory:public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration() //создаём объект конфигурации
.WriteTo.Console()
.CreateLogger();
try
{
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
}
Теперь можно записывать сообщения в журналы через методы статического класса
Log.
Совет
У Serilog есть много дополнительных функций. Например, возможность добавлять обогатители — для добавления дополнительной информации во все сообщения журналов. Подробно рекомендуемый способ настройки Serilog в ASP.NET Core разбирается в посте автора Serilog Николаса Блюмхардта.
Последнее обновление :
7 мая 2023 г.
Дата создания : 20 октября 2022 г.
Дата создания : 20 октября 2022 г.