Expero.Libraries.CSharp.Logging 1.1.1-beta.45076
Expero.Libraries.CSharp.Logging
Пакет для работы с логированием частей HTTP запроса.
Пакет содержит:
- Middleware для логирования HTTP запросов;
- Аттрибут, для настройки разных уровней логирования для разных частей запроса конкретного
endpoint; - Возможность сохранения логов в S3;
- Аттрибут, для включения/отключения сохранения логов в S3 для конкретного
endpoint; - Методы, для упрощенной регистрации Middleware и сервисов для логирования;
- Возможность записи в лог собственных сообщений
Executing endpointиExecutied endpointс уровнем логированияDebug;
Подключение к проекту.
Для подключения пакета к проекту необходимо добавить сервис и зарегестрировать Middleware. Для регистрации сервисов в пакете есть 2 метода:
AddHttpLogging(LoggingSettings).
AddHttpLogging(Action<LoggingSettings>).
Модель LoggingSettings содержит настройки уровней логирования для разных частей запроса, и флаг RoutingDebug. Уровень логирования это стандартный enum LogLevel из Microsoft.Extensions.Logging:
RequestUrl- уровень логирования Url;RequestQuery- уровень логирования Query-параметров;RequestHeaders- уровень логирования заголовков запроса;RequestBody- уровень логирования тела запроса;ResponseHeaders- уровень логирования заголовков ответа;ResponseBody- уровень логирования тела ответа;RoutingDebug- флаг, включающий запись собственных сообщенийExecuting endpointиExecutied endpointс уровнемDebug;SaveToS3- флаг, указывающий сохранение в S3 всех логов;S3Credentialsнастройки сервера S3;Bucket- наименованиеBucketдля хранения логов.
Кроме того, необходимо добавить Middleware к приложению. Для этого надо вызвать метод UseHttpLogging() у ApplicationBuilder, причем обязательно после UseRouting().
После этого, все HTTP запросы к endpoint, отмеченным аттрибутом [Logging] будут логироваться с заданным уровнем.
N.B. При использовании RoutingDebug рекомендуется установить уровень логирования Microsoft.AspNetCore.Routing в уровень выше Information, например Warning. Это отключит штатные сообщения Executing endpoint и Executied endpoint с уровнем Information, иначе они будут дублироваться.
"Serilog": {
"Other": {
"Microsoft.AspNetCore.Routing": "Warning"
}
Кроме того, необходимо добавить Middleware к приложению. Для этого надо вызвать метод UseHttpLogging() у ApplicationBuilder, причем обязательно после UseRouting().
После этого, все HTTP запросы к endpoint, отмеченным аттрибутом [Logging] будут логироваться с заданным уровнем.
Пример добавления в проект:
public void AddService(IServiceCollection services)
{
/*...*/
services.AddHttpLogging(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;
options.SaveToS3 = false;
options.S3Credentials = new ObjectStorageS3ServiceCredentials
{
Host = "s3.expero.ru",
Ssl = true,
AccessKey = "sdgfertfdsafsa",
SecretKey = "dfkxkclkwoeewrjzklfskdknvcsdhfkja",
DefaultBucket = new ObjectStorageS3BucketName("Logs")
};
options.Bucket = "portal-logs";
});
/*...*/
}
public static void UseApi(this IApplicationBuilder app)
{
/*...*/
app.UseRouting();
app.UseHttpLogging();
/*...*/
}
либо через создание экземпляра 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,
SaveToS3 = false,
S3Credentials = new ObjectStorageS3ServiceCredentials
{
Host = "s3.expero.ru",
Ssl = true,
AccessKey = "sdgfertfdsafsa",
SecretKey = "dfkxkclkwoeewrjzklfskdknvcsdhfkja",
DefaultBucket = new ObjectStorageS3BucketName("Logs")
},
Bucket = "portal-logs"
};
services.AddHttpLogging(settings);
/*...*/
}
public static void UseApi(this IApplicationBuilder app)
{
/*...*/
app.UseRouting();
app.UseHttpLogging();
/*...*/
}
Аттрибут [Logging].
Аттрибут [Logging] применяется к методам контроллера, обабатывающюм запросы. В случае указания аттрибута без параметров, будут логироваться те части запроса и с тем уровнем логирования, которые были указаны в параметрах AddHttpLogging при подключении сервиса.
Пример использования аттибута [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");
}
/*...*/
Аттрибут [LoggingS3].
Аттрибут [LoggingS3] применяется к методам контроллера, обабатывающюм запросы. В случае указания аттрибута без параметров, логирование указанного метода будет происходить в файл и сохраняться на сервер S3.
Пример использования аттибута [LoggingS3]:
/*...*/
[HttpGet]
[LoggingS3]
public JsonResult Get()
{
return new JsonResult("Everything is ok");
}
/*...*/
В случае, когда необходимо указать, что запись в файл не требуется, нужно указать аттрибут false в качестве параметра [Logging(false)].
Пример явного отключения записи логов в S3:
/*...*/
[HttpGet]
[LoggingS3(false)]
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
- Expero.Libraries.CSharp.ObjectStorage.S3 (>= 2.4.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 |