<b> "schema": "Logging",</b>
<b> "tableName": "SeriLogs",</b>
<b> "restrictedToMinimumLevel": "Warning"</b>
<b> }</b>
},
"RebuildDataBase": false,
<b> "ApplicationName": "AutoLot.Api - Prod",</b>
"ConnectionStrings": {
"AutoLot": "It's a secret"
}
}
Обновление Program.cs
Добавьте в файлы Program.cs в проектах
AutoLot.Api
и
AutoLot.Mvc
следующий оператор
using
:
using AutoLot.Services.Logging;
Модифицируйте метод
CreateHostBuilder()
в обоих проектах, как показано ниже:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).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<T>
на
IAppLogging<T>
:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
...
private readonly <b>IAppLogging</b><WeatherForecastController> _logger;
public WeatherForecastController(<b>IAppLogging</b><WeatherForecastController> logger)
{
_logger = logger;
}
...
}
Теперь модифицируйте
HomeController
в проекте
AutoLot.Mvc
. Добавьте в класс следующий оператор
using
:
using AutoLot.Services.Logging;
Измените
ILogger<T>
на
IAppLogging<T>
:
[Route("[controller]/[action]")]
public class HomeController : Controller
{
private readonly <b>IAppLogging</b><HomeController> _logger;
public HomeController(<b>IAppLogging</b><HomeController> logger)
{
_logger = logger;
}
...
}
После этого регистрация в журнале выполняется в каждом контроллере простым обращением к средству ведения журнала, например:
// WeatherForecastController.cs (AutoLot.Api)
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
<b> _logger.LogAppWarning("This is a test");</b>
...
}
// HomeController.cs (AutoLot.Mvc)
[Route("/")]
[Route("/[controller]")]
[Route("/[controller]/[action]")]
[HttpGet]
public IActionResult Index()
{
<b> _logger.LogAppWarning("This is a test");</b>
return View();
}
Испытание инфраструктуры ведения журнала
Имея установленную инфраструктуру Serilog, самое время протестировать ведение журналов для приложений. Если вы используете Visual Studio, тогда укажите
AutoLot.Mvc
в качестве стартового проекта (щелкните правой кнопкой мыши на имени проекта в окне
Solution Explorer, выберите в контекстном меню пункт
Set as Startup Project (Установить как стартовый проект) и щелкните на кнопке запуска с зеленой стрелкой или нажмите <
F5>). В случае работы в VS Code откройте окно терминала (<
Ctrl+'>), перейдите в каталог
AutoLot.Mvc
и введите команду
dotnet run
.