## 介紹 1. HttpLogging 是 .NET 6 新加入的一個框架內置的中間件 2. 可以提供以下信息的日誌: - HTTP請求信息 - Common properties - Headers - Body - HTTP響應信息 ## 使用 添加 ```csharp builder.Ser ...
介紹
- HttpLogging 是 .NET 6 新加入的一個框架內置的中間件
- 可以提供以下信息的日誌:
- HTTP請求信息
- Common properties
- Headers
- Body
- HTTP響應信息
使用
添加
builder.Services.AddHttpLogging(options =>
{
// 日誌記錄的欄位配置,可以以 | 連接
options.LoggingFields = HttpLoggingFields.All;
// 增加請求頭欄位記錄
options.RequestHeaders.Add("sec-ch-ua");
// 增加響應頭欄位記錄
options.ResponseHeaders.Add("MyResponseHeader");
// 增加請求的媒體類型
options.MediaTypeOptions.AddText("application/javascript");
// 配置請求體日誌最大長度.預設32 * 1024,32kb
options.RequestBodyLogLimit = 4096;
// 配置響應體日誌最大長度.預設32 * 1024,32kb
options.ResponseBodyLogLimit = 4096;
});
使用,註意中間件順序
app.UseHttpLogging();
記得在appsettings.json的"LogLevel"中設置這個
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
更多配置詳解參見官方教程
效果如下
其中[Redacted]
標識的Header信息是傳遞了但是預設未記錄的,要記錄需要自行添加.
問題
Q: 怎麼忽略指定Api的日誌記錄?比如一些輪詢介面
A: 目前可以使用這樣的方式實現.參考HttpLoggingWithFilter
app.UseWhen(
context => !context.Request.Path.StartsWithSegments("/Sensitive"), //SensitiveController.cs
builder => builder.UseHttpLogging()
);
Q: 怎麼忽略指定Api中的指定信息?比如一些傳遞密碼或者身份信息的介面
A: 可以用上邊的方法忽略然後自行記錄
官方issue跟進
HttpLoggingMiddleware could allow custom code to decide whether to log or not
Make Http Logging Middleware Endpoint aware
HttpLoggingMiddleware does not log all response headers when log response body
本文來自博客園,作者:ZUOXIANGE,轉載請註明原文鏈接:https://www.cnblogs.com/ZUOXIANGE/p/17511238.html