.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日志:
在这里插入图片描述
在默认情况下,HttpLoggingMiddleware只会记录请求和响应的基本信息,比如请求地址、请求头、协议版本以及响应状态和响应头等。对于那些不是默认列表中的请求头和响应头,对应的值会显示为Readected,如果需要记录它们,就必须配置HttpLoggingOptions,一般情况下都是在注册服务的时候进行配置:

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

重启服务并请求一个接口后日志输出如下图:
在这里插入图片描述
在图中我们可以看到请求头中的Cache-Control和响应头中的Server都显示出了值。同理,我们自定义的请求头和响应头也可以在这里配置,本文在这里就不再举例。那么,一定会有同学问,如果我需要显示所有的响应头和请求头该怎么做呢?总不能把每个头都配置一遍吧。其实微软为我们已经解决了这个问题,可以通过加入如下配置解决:

uilder.Services.AddHttpLogging(options =>
{
    //显示所有头信息
    options.LoggingFields = HttpLoggingFields.All;
    options.RequestHeaders.Add("Cache-Control");
    options.ResponseHeaders.Add("Server");
});

运行代码并请求一个接口,我们就可以看到所有响应头和请求头的值都显示了出来。但是这里需要提醒的是HttpLoggingFields.All对性能有影响,在实际项目中不建议这个使用。
好了,今天就讲这么多,本文主要讲了常用的内容,更多关于Http Logging的内容可以参阅微软文档。

Tip:目前Http Logging只能记录Information级别的日志,我们无法根据响应状态来动态配置日志级别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵叔哟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值