Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
<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.ApiAutoLot.Mvcusingusing AutoLot.Services.Logging;Модифицируйте метод
CreateHostBuilder()public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).ConfigureSerilog();Обновление Startup.cs
Добавьте в файлы
Startup.csAutoLot.ApiAutoLot.Mvcusingusing AutoLot.Services.Logging;Затем необходимо поместить новые интерфейсы ведения журнала в контейнер DI. Добавьте в метод
ConfigureServices()services.AddScoped(typeof(IAppLogging<>), typeof(AppLogging<>));Обновление контроллера
Следующее обновление связано с заменой ссылок на
ILoggerIAppLoggingWeatherForecastControllerAutoLot.Apiusingusing 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; } ...}Теперь модифицируйте
HomeControllerAutoLot.Mvcusingusing 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.MvcAutoLot.Mvcdotnet run