天天看點

#yyds幹貨盤點#.NET6新東西--Http Logging

在.NET6中引入了一個日志中間件,Http Logging中間件。我們可以使用這個中間件監控并記錄請求和響應資訊。這個Http Logging中間件算是.NET6中比較簡單的,是以我們之間看怎麼使用。首先我們要啟用Http Logging,我們在Program.cs檔案中增加如下代碼:

var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
//啟用Http Logging
app.UseHttpLogging();
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
      

啟用後運作代碼,然後通路一個接口,控制台就會列印出HttpLogging日志:

#yyds幹貨盤點#.NET6新東西--Http Logging

在預設情況下,HttpLoggingMiddleware隻會記錄請求和響應的基本資訊,比如請求位址、請求頭、協定版本以及響應狀态和響應頭等。對于那些不是預設清單中的請求頭和響應頭,對應的值會顯示為Readected,如果需要記錄它們,就必須配置HttpLoggingOptions,一般情況下都是在注冊服務的時候進行配置:

builder.Services.AddHttpLogging(options =>
{
    options.RequestHeaders.Add("Cache-Control");
    options.ResponseHeaders.Add("Server");
});
      

重新開機服務并請求一個接口後日志輸出如下圖:

#yyds幹貨盤點#.NET6新東西--Http Logging

在圖中我們可以看到請求頭中的Cache-Control和響應頭中的Server都顯示出了值。同理,我們自定義的請求頭和響應頭也可以在這裡配置,本文在這裡就不再舉例。那麼,一定會有同學問,如果我需要顯示所有的響應頭和請求頭該怎麼做呢?總不能把每個頭都配置一遍吧。其實微軟為我們已經解決了這個問題,可以通過加入如下配置解決:

uilder.Services.AddHttpLogging(options =>
{
    //顯示所有頭資訊
    options.LoggingFields = HttpLoggingFields.All;
    options.RequestHeaders.Add("Cache-Control");
    options.ResponseHeaders.Add("Server");
});
      

繼續閱讀