在现代Web开发中,ASP.NET Core请求日志中间件是保障系统可观测性、排查问题和监控性能的重要工具。无论你是刚入门的开发者,还是有一定经验的工程师,掌握如何自定义请求日志中间件都将极大提升你的应用健壮性。
默认情况下,ASP.NET Core 提供了基础的日志功能,但它不会自动记录每个 HTTP 请求的详细信息(如请求路径、方法、耗时、响应状态码等)。通过自定义.NET Core日志记录中间件,我们可以:
下面我们将一步步教你如何从零开始编写一个简单但实用的请求日志中间件。
在你的 ASP.NET Core 项目中,创建一个新文件 RequestLoggingMiddleware.cs:
using Microsoft.AspNetCore.Http;using Microsoft.Extensions.Logging;using System.Diagnostics;using System.Threading.Tasks;namespace YourApp.Middleware{ public class RequestLoggingMiddleware { private readonly RequestDelegate _next; private readonly ILogger<RequestLoggingMiddleware> _logger; public RequestLoggingMiddleware(RequestDelegate next, ILogger<RequestLoggingMiddleware> logger) { _next = next; _logger = logger; } public async Task InvokeAsync(HttpContext context) { var stopwatch = Stopwatch.StartNew(); var method = context.Request.Method; var path = context.Request.Path; try { await _next(context); _logger.LogInformation( "[{Method}] {Path} => {StatusCode} ({ElapsedMs} ms)", method, path, context.Response.StatusCode, stopwatch.ElapsedMilliseconds); } catch (System.Exception ex) { _logger.LogError(ex, "[{Method}] {Path} => {StatusCode} ({ElapsedMs} ms) ERROR: {ErrorMessage}", method, path, context.Response.StatusCode, stopwatch.ElapsedMilliseconds, ex.Message); throw; } } }} 打开 Program.cs(.NET 6+)或 Startup.cs,将中间件添加到请求管道中:
// 在 Program.cs 中(.NET 6 及以上版本)var builder = WebApplication.CreateBuilder(args);// 添加服务...builder.Services.AddControllers();var app = builder.Build();// 注意:中间件顺序很重要!// 日志中间件应放在 UseRouting() 之后、UseEndpoints() 之前app.UseRouting();// 注册我们的请求日志中间件app.UseMiddleware<YourApp.Middleware.RequestLoggingMiddleware>();app.MapControllers();app.Run(); 这个简单的中间件开发教程展示了如何捕获请求方法、路径、响应状态码和处理时间。你还可以进一步扩展它,例如:
运行应用后,每次访问 API 都会在控制台或日志文件中看到类似这样的输出:
info: YourApp.Middleware.RequestLoggingMiddleware[0] [GET] /api/users => 200 (45 ms) 这种结构化的日志格式非常适合后续使用 ELK(Elasticsearch, Logstash, Kibana)或 Seq 等工具进行聚合分析,实现强大的Web API请求日志监控能力。
通过本教程,你已经掌握了在 ASP.NET Core 中实现请求日志中间件的核心方法。这不仅提升了应用的可观测性,也为后续的性能优化和故障排查打下了坚实基础。赶快在你的项目中试试吧!
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025129723.html