Expero.Libraries.CSharp.Logging 1.0.0
Expero.Libraries.CSharp.Logging
Пакет для работы с логированием частей HTTP запроса.
Пакет содержит:
- Middleware для логирования HTTP запросов;
- Аттрибут, для настройки разных уровней логирования для разных частей запроса конкретного
endpoint; - Методы, для упрощенной регистрации Middleware и сервисов для логирования;
- Возможность записи в лог собственных сообщений
Executing endpointиExecutied endpointс уровнем логированияDebug;
Подключение к проекту.
Для подключения пакета к проекту необходимо добавить сервис и зарегестрировать Middleware. Для регистрации сервисов в пакете есть 2 метода:
AddLogging(LoggingSettings).
AddLogging(Action<LoggingSettings>).
Модель LoggingSettings содержит настройки уровней логирования для разных частей запроса, и флаг RoutingDebug. Уровень логирования это стандартный enum LogLevel из Microsoft.Extensions.Logging:
RequestUrl- уровень логирования Url;RequestQuery- уровень логирования Query-параметров;RequestHeaders- уровень логирования заголовков запроса;RequestBody- уровень логирования тела запроса;ResponseHeaders- уровень логирования заголовков ответа;ResponseBody- уровень логирования тела ответа;RoutingDebug- флаг, включающий запись собственных сообщенийExecuting endpointиExecutied endpointс уровнемDebug;
N.B. При использовании RoutingDebug рекомендуется установить уровень логирования Microsoft.AspNetCore.Routing в уровень выше Information, например Warning. Это отключит штатные сообщения Executing endpoint и Executied endpoint с уровнем Information, иначе они будут дублироваться.
"Serilog": {
"Other": {
"Microsoft.AspNetCore.Routing": "Warning"
}
Кроме того, необходимо добавить Middleware к приложению. Для этого надо вызвать метод UseLogging() у ApplicationBuilder, причем обязательно после UseRouting().
После этого, все HTTP запросы к endpoint, отмеченным аттрибутом [Logging] будут логироваться с заданным уровнем.
Пример добавления в проект:
public void AddService(IServiceCollection services)
{
/*...*/
services.AddLogging(options =>
{
options.RequestUrl = LogLevel.None;
options.RequestQuery = LogLevel.Debug;
options.RequestHeaders = LogLevel.Debug;
options.RequestBody = LogLevel.Debug;
options.ResponseHeaders = LogLevel.Debug;
options.ResponseBody = LogLevel.Debug;
options.RoutingDebug = true;
});
/*...*/
}
public static void UseApi(this IApplicationBuilder app)
{
/*...*/
app.UseRouting();
app.UseLogging();
/*...*/
}
либо через создание экземпляра LoggingSettings:
public void AddService(IServiceCollection services)
{
/*...*/
var settings = new LoggingSettings()
{
RequestUrl = LogLevel.None,
RequestQuery = LogLevel.Debug,
RequestHeaders = LogLevel.Debug,
RequestBody = LogLevel.Debug,
ResponseHeaders = LogLevel.Debug,
ResponseBody = LogLevel.Debug,
RoutingDebug = true
};
services.AddLogging(settings);
/*...*/
}
public static void UseApi(this IApplicationBuilder app)
{
/*...*/
app.UseRouting();
app.UseLogging();
/*...*/
}
Аттрибут [Logging].
Аттрибут [Logging] применяется к методам контроллера, обабатывающюм запросы. В случае указания аттрибута без параметров, будут логироваться те части запроса и с тем уровнем логирования, которые были указаны в параметрах AddLogging при подключении сервиса.
Пример использования аттибута [Logging]:
/*...*/
[HttpGet]
[Logging]
public JsonResult Get()
{
return new JsonResult("Everything is ok");
}
/*...*/
В случае, когда необходимо явно указать какие части запроса каким уровнем необходимо логировать, нужно указать их в качестве параметров аттрибута [Logging(...)]. При этом части запроса, которые ны были явно указаны, будут логироваться с уровнем, указанным при подключении пакета. Доступные настройки имеют те же названия, что и в настройках при подключении:
RequestUrl- уровень логирования Url;RequestQuery- уровень логирования Query-параметров;RequestHeaders- уровень логирования заголовков запроса;RequestBody- уровень логирования тела запроса;ResponseHeaders- уровень логирования заголовков ответа;ResponseBody- уровень логирования тела ответа;
Пример с явным указанием уровней логирования частей HTTP запроса :
/*...*/
[HttpGet]
[Logging(RequestUrl = LogLevel.Debug, ResponseHeaders = LogLevel.Error)]
public JsonResult Get()
{
return new JsonResult("Everything is ok");
}
/*...*/
Также, можно указать один уровень логирования для всех частей запроса, передав его в качестве параметра аттрибута.
Пример с явным указанием уровней логирования частей HTTP запроса :
/*...*/
[HttpGet]
[Logging(LogLevel.None)]
public JsonResult Get()
{
return new JsonResult("Everything is ok");
}
/*...*/
Showing the top 20 packages that depend on Expero.Libraries.CSharp.Logging.
| Packages | Downloads |
|---|---|
|
Expero.Libraries.CSharp.BackgroundTasks
Пакет для работы с фоновыми задачами.
|
1 |
.NET 7.0
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 7.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 7.0.1)
| Version | Downloads | Last updated |
|---|---|---|
| 1.6.2 | 1 | 02/28/2026 |
| 1.6.1 | 1 | 02/28/2026 |
| 1.6.0 | 1 | 02/28/2026 |
| 1.6.0-beta.78716 | 1 | 02/28/2026 |
| 1.6.0-beta.78714 | 1 | 02/28/2026 |
| 1.5.0 | 1 | 02/28/2026 |
| 1.5.0-beta.65659 | 1 | 02/28/2026 |
| 1.4.2-beta.52735 | 1 | 02/28/2026 |
| 1.4.0 | 1 | 02/28/2026 |
| 1.4.0-beta.56537 | 1 | 02/28/2026 |
| 1.4.0-beta.52845 | 1 | 02/28/2026 |
| 1.3.0 | 1 | 02/28/2026 |
| 1.2.1 | 1 | 02/28/2026 |
| 1.2.0 | 1 | 02/28/2026 |
| 1.1.1-beta.46062 | 1 | 02/28/2026 |
| 1.1.1-beta.45837 | 1 | 02/28/2026 |
| 1.1.1-beta.45076 | 1 | 02/28/2026 |
| 1.1.0 | 1 | 02/28/2026 |
| 1.0.0 | 1 | 02/28/2026 |