using AutoLot.Services.Logging;
Модифицируйте метод CreateHostBuilder
в обоих проектах, как показано ниже:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup
}).ConfigureSerilog;
Обновление Startup.cs
Добавьте в файлы Startup.cs
в проектах AutoLot.Api
и AutoLot.Mvc
следующий оператор using
:
using AutoLot.Services.Logging;
Затем необходимо поместить новые интерфейсы ведения журнала в контейнер DI. Добавьте в метод ConfigureServices
в обоих проектах такой код:
services.AddScoped(typeof(IAppLogging<>), typeof(AppLogging<>));
Обновление контроллера
Следующее обновление связано с заменой ссылок на ILogger
ссылками на IAppLogging
. Начните с класса WeatherForecastController
в проекте AutoLot.Api
. Добавьте в класс следующий оператор using
:
using AutoLot.Services.Logging;
Далее измените ILogger
на IAppLogging
:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
...
private readonly IAppLogging
public WeatherForecastController(IAppLogging
{
_logger = logger;
}
...
}
Теперь модифицируйте HomeController
в проекте AutoLot.Mvc
. Добавьте в класс следующий оператор using
:
using AutoLot.Services.Logging;
Измените ILogger
на IAppLogging
:
[Route("[controller]/[action]")]
public class HomeController : Controller
{
private readonly IAppLogging
public HomeController(IAppLogging
{
_logger = logger;
}
...
}
После этого регистрация в журнале выполняется в каждом контроллере простым обращением к средству ведения журнала, например:
// WeatherForecastController.cs (AutoLot.Api)
[HttpGet]
public IEnumerable
{
_logger.LogAppWarning("This is a test");
...
}
// HomeController.cs (AutoLot.Mvc)
[Route("/")]
[Route("/[controller]")]
[Route("/[controller]/[action]")]
[HttpGet]
public IActionResult Index
{
_logger.LogAppWarning("This is a test");
return View;
}
Испытание инфраструктуры ведения журнала
Имея установленную инфраструктуру Serilog, самое время протестировать ведение журналов для приложений. Если вы используете Visual Studio, тогда укажите AutoLot.Mvc
в качестве стартового проекта (щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer, выберите в контекстном меню пункт Set as Startup Project (Установить как стартовый проект) и щелкните на кнопке запуска с зеленой стрелкой или нажмите <F5>). В случае работы в VS Code откройте окно терминала (<Ctrl+'>), перейдите в каталог AutoLot.Mvc
и введите команду dotnet run
.
В Visual Studio автоматически запустится браузер с представлением Home/Index
. Если вы применяете VS Code, то вам понадобится открыть браузер и перейти по ссылке https://localhost:5001
. После загрузки вы можете закрыть браузер, поскольку обращение к средству ведения журнала произошло при загрузке домашней страницы. Закрытие браузера в случае использования Visual Studio останавливает отладку. Чтобы остановить отладку в VS Code, нажмите <Ctrl+C> в окне терминала.
В каталоге проекта вы увидите файл по имени ErrorLogГГГMMДД.txt
, в котором обнаружите запись, похожую на показанную ниже:
[ГГ-ММ-ДД чч:мм:сс Warning]AutoLot.Mvc -
Dev:AutoLot.Mvc.Controllers.HomeController
Message:This is a test
in method Index at
D:\Projects\Books\csharp9-wf\Code\New\Chapter_29\AutoLot.Mvc\Controllers\
HomeController.cs:30