RequestLog
RequestLog — это библиотека на C# на основе .NET Standard 2.0 и .NET Standard 2.1, которая помогает собирать информацию о запросах в NetCore. Подробные инструкции по использованию можно найти в документации.
Чтобы установить RequestLog в свой проект, выполните следующую команду:
PM> Install-Package RequestLog
В настоящее время RequestLog поддерживает только MySQL. Вы можете установить соответствующий пакет по мере необходимости:
PM> Install-Package RequestLog.MySql
Сначала настройте RequestLog в файле Startup.cs следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddRequestLog(options =>
{
options.Headers = "Host"; // информация о запросе, которую необходимо записать, например, если необходимо записать несколько заголовков запросов, разделите их с помощью «,»
options.HitHeaders = "Content-Type"; // исключаемая информация заголовка запроса, последний сохранённый заголовок запроса — headers без hitHeaders
options.UseMySql(x =>
{
x.ConnectionString =
"Server=localhost;port=3306;database=system.request.log;uid=root;pwd=rootroot;Convert Zero Datetime=True;";
//x.Rules = Rules.None; // текущий запрос не архивируется, все запросы находятся в одной таблице
x.Rules = Rules.Year; // текущий запрос архивируется по годам (по умолчанию)
// x.Rules = Rules.Month; // текущий запрос архивируется по месяцам
// x.Rules = Rules.Day; // текущий запрос архивируется по дням
}); // если вы используете MySQL, выберите соответствующую конфигурацию в зависимости от базы данных
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRequestLog(); // включить ведение журнала, иначе оно не будет работать (поместите его в начало)
...
}
Для записи запросов в контроллере:
// Все запросы в контроллере записываются (кроме игнорируемых)
[RequestLog]
public class CheckController : Controller
{
// запись журнала
[HttpGet]
public IActionResult Healthy()
{
return Content("healthy");
}
// текущий метод игнорируется, журнал не записывается
[HttpGet]
[RequestLog(Ignore = true)]
public IActionResult Healthy2()
{
return Content("healthy2");
}
}
public class Check2Controller : Controller
{
// только текущий метод записывает журнал и устанавливает имя как Healthy
[HttpGet]
[RequestLog(Name = "Healthy")]
public IActionResult Healthy()
{
return Content("healthy");
}
// записывает журнал
[HttpGet]
public IActionResult Healthy()
{
return Content("healthy");
}
}
Если вы хотите добавить дополнительные параметры к запросу в журнале, вы можете внедрить IRequest и вызвать его метод SetExtend для записи.
Например, в промежуточном программном обеспечении для обработки ошибок вы можете записать фактическую информацию об ошибке следующим образом:
/// <summary>
/// обработка ошибок
/// </summary>
public class ErrorHandlingMiddleware
{
private readonly RequestDelegate _next;
private readonly IRequest _request;
/// <summary>
///
/// </summary>
/// <param name="next"></param>
public ErrorHandlingMiddleware(RequestDelegate next, IRequest request)
{
_next = next;
_request = request;
}
/// <summary>
///
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (System.Exception ex)
{
_request.SetExtend(ex.Message);
await HandleExceptionAsync(context, msg);
}
}
private Task HandleExceptionAsync(HttpContext context, string msg)
{
context.Response.ContentType = "application/json;charset=utf-8";
return context.Response.WriteAsync(msg);
}
}
Затем добавьте его в Configure в Startup:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
``` {
app.UseRequestLog(); // **Включить журнал регистрации**. Без включения он не будет работать (поместить в начало).
app.UseMiddleware<ErrorHandlingMiddleware>(); // **Глобальное промежуточное ПО для обработки исключений**
......
}
Tip:
После включения журнала регистрации по умолчанию в последней версии он будет добавлять журнал ко всем запросам. Чтобы избежать влияния на производительность, добавьте [RequestLog(Ignore = true)] либо в метод, либо в заголовок контроллера, если хотите игнорировать регистрацию загрузки файлов или других запросов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )