Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
В примерах в прошлой теме мы получали объект логгера, который добавляется через 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!"); }); } }