如何在ASP.NET 6.0中过滤HTTP日志,排除健康检查请求
解决ASP.NET 6.0中过滤健康检查HTTP日志的问题
方法一:在HTTP Logging配置中直接排除指定路径
通过配置HttpLoggingOptions的RequestPredicate,让HTTP Logging中间件直接忽略健康检查路径的请求,从根源上避免生成这类日志。
修改你的服务注册代码:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddHttpLogging(options => { options.LoggingFields = HttpLoggingFields.All; // 排除健康检查路径/hc的请求日志 options.RequestPredicate = context => !context.Request.Path.StartsWithSegments("/hc"); }); builder.Services.AddHealthChecks(); // ... var app = builder.Build(); app.UseHttpLogging(); app.MapHealthChecks("/hc"); // ...
方法二:通过日志过滤规则隐藏指定日志
如果需要更灵活的过滤逻辑(比如仅排除健康检查的成功日志、保留异常日志),可以在配置文件中添加日志过滤规则,针对HTTP Logging的日志类别做定向过滤。
在appsettings.json中添加以下配置:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information" }, "Filters": [ { "ProviderName": "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware", "Filter": { "Name": "RequestPath", "Value": "/hc" }, "LogLevel": "None" } ] } }
这种方式无需修改代码,仅通过配置就能让日志系统忽略所有路径为/hc的HTTP日志。
内容的提问来源于stack exchange,提问作者user1713059
相关产品推荐
相关产品推荐

