Фабрика логгера и провайдеры логгирования

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7

Последнее обновление: 06.11.2019

В примерах в прошлой теме мы получали объект логгера, который добавляется через DI. Но мы можем также использовать фабрику логгера для его создания:

public class Startup
{
	public void Configure(IApplicationBuilder app)
	{
		var loggerFactory = LoggerFactory.Create(builder =>
		{
			builder.AddConsole();
		});
		ILogger logger = loggerFactory.CreateLogger<Startup>();
		app.Run(async (context) =>
		{
			logger.LogInformation("Requested Path: {0}", context.Request.Path);
			await context.Response.WriteAsync("Hello World!");
		});
	}
}

В данном случае с помощью метода LoggerFactory.Create создается фабрика логгера. В качестве параметра метод принимает лямбда-выражения, котороое устанавает некоторые настройки логгирования. В частности, метод AddConsole() объекта ILoggingBuilder устанавливает вывод сообщений лога на консоль. Затем метод CreateLogger() фабрики собственно создает логгер:

ILogger logger = loggerFactory.CreateLogger<Startup>();

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

Провайдеры логгирования

В примере выше логгирование шло на консоль. Вообще путь логгирования определяется провайдером логгирования. По умолчанию ASP.NET Core предоставляет следующие провайдеры:

  • Console: вывод информации на консоль. Устанавливается методом AddConsole()

  • Debug: использует для ведения записей лога класс System.Diagnostics.Debug и в частности его метод Debug.WriteLine. Соответственно все записи лога мы можем увидеть в окне Output в Visual Studio. Устанавливается методом AddDebug()

  • EventSource: на Windows введет логгирование в лог ETW (Event Tracing for Windows), для просмотра которого может использоваться инструмент PerfView (или аналагичный инструменты). Хотя данный провайдер задумывался как кроссплатформенный, для Linux и MacOS пока назначение лога не определено. Устанавливается методом AddEventSourceLogger()

  • EventLog: записывает в Windows Event Log, соответственно работает только при запуске на Windows. Устанавливается методом AddEventLog()

Например, вместо консоли зададим вывод лога в окне Output в Visual Studio:

public class Startup
{
	public void Configure(IApplicationBuilder app)
	{
		var loggerFactory = LoggerFactory.Create(builder =>
		{
			builder.AddDebug();
		});
		ILogger logger = loggerFactory.CreateLogger<Startup>();
		app.Run(async (context) =>
		{
			logger.LogInformation("Requested Path: {0}", context.Request.Path);
			await context.Response.WriteAsync("Hello World!");
		});
	}
}
Провайдеры логгирования logging providers in ASP.NET Core
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850