.NET6新东西--Http Logging

简介: .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日志:

1.png

在默认情况下,HttpLoggingMiddleware只会记录请求和响应的基本信息,比如请求地址、请求头、协议版本以及响应状态和响应头等。对于那些不是默认列表中的请求头和响应头,对应的值会显示为Readected,如果需要记录它们,就必须配置HttpLoggingOptions,一般情况下都是在注册服务的时候进行配置:

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

重启服务并请求一个接口后日志输出如下图:

1.png

在图中我们可以看到请求头中的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级别的日志,我们无法根据响应状态来动态配置日志级别。


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
12月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
678 35
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
644 26
|
JSON 数据格式
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
610 2
|
数据采集 JSON API
异步方法与HTTP请求:.NET中提高响应速度的实用技巧
本文探讨了在.NET环境下,如何通过异步方法和HTTP请求提高Web爬虫的响应速度和数据抓取效率。介绍了使用HttpClient结合async和await关键字实现异步HTTP请求,避免阻塞主线程,并通过设置代理IP、user-agent和cookie来优化爬虫性能。提供了代码示例,演示了如何集成这些技术以绕过目标网站的反爬机制,实现高效的数据抓取。最后,通过实例展示了如何应用这些技术获取API的JSON数据,强调了这些方法在提升爬虫性能和可靠性方面的重要性。
378 1
异步方法与HTTP请求:.NET中提高响应速度的实用技巧
|
数据采集 API 开发者
.NET 8新特性:使用ConfigurePrimaryHttpMessageHandler定制HTTP请求
在.NET 8中,通过`ConfigurePrimaryHttpMessageHandler`方法,开发者能更精细地控制HTTP请求,这对于构建高效爬虫尤为重要。此特性支持定制代理IP、管理Cookie与User-Agent,结合多线程技术,有效应对网络限制及提高数据采集效率。示例代码展示了如何设置代理服务器、模拟用户行为及并发请求,从而在遵守网站规则的同时,实现快速稳定的数据抓取。
348 0
.NET 8新特性:使用ConfigurePrimaryHttpMessageHandler定制HTTP请求
|
数据采集 开发框架 .NET
HttpClient在ASP.NET Core中的最佳实践:实现高效的HTTP请求
在现代Web开发中,高效可靠的HTTP请求对应用性能至关重要。ASP.NET Core提供的`HttpClient`是进行这类请求的强大工具。本文探讨其最佳实践,包括全局复用`HttpClient`实例以避免性能问题,通过依赖注入配置预设头部信息;使用代理IP以防IP被限制;设置合理的`User-Agent`和`Cookie`来模拟真实用户行为,提高请求成功率。通过这些策略,可显著增强爬虫或应用的稳定性和效率。
503 0
HttpClient在ASP.NET Core中的最佳实践:实现高效的HTTP请求
|
API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
377 0
|
存储 网络协议 Go
7天玩转 Golang 标准库之 http/net
7天玩转 Golang 标准库之 http/net
266 2

热门文章

最新文章