您现在的位置是:网站首页> 编程资料编程资料

ASP.NET Core使用自定义日志中间件_实用技巧_

2023-05-24 390人已围观

简介 ASP.NET Core使用自定义日志中间件_实用技巧_

这个日志框架使用的是ASP.NET Core的NLog,用来记录每次请求信息和返回信息。

1.首先创建一个Web应用项目,我选择的是MVC模板:

2.使用NuGet添加Microsoft.Extensions.Logging和NLog.Extensions.Logging

3.修改Configure方法:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddNLog(); //添加NLog NLog.LogManager.LoadConfiguration("nlog.config"); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }

4.添加nlog.config配置文件,内容如下:

注意:运行项目时需要复制nlog.config到debug

5.接下来开始自定义中间件

添加一个LogMiddleware类:

public class LogMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; public LogMiddleware(RequestDelegate next, ILogger logger) { _next = next; _logger = logger; } public async Task Invoke(HttpContext context) { _logger.LogInformation("Request Url:" + context.Request.Path +Environment.NewLine + "Body:" + context.Request.Body.ToString()); await _next.Invoke(context); _logger.LogInformation("Response Url:" + context.Request.Path + Environment.NewLine + "Body:" + context.Response.Body.ToString()); } }

再创建一个LogMiddlewareExtensions类:

///  /// 这是扩展中间件 ///  public static class LogMiddlewareExtensions { public static IApplicationBuilder UseLog(this IApplicationBuilder builder) { return builder.UseMiddleware(); } }

这样就编写好一个自定义的中间件。

6.在Configure方法中调用app.UseLog()

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddNLog(); //添加NLog NLog.LogManager.LoadConfiguration("nlog.config"); app.UseLog(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }

运行代码,会在debug文件下生成日志文件。

到此这篇关于ASP.NET Core使用自定义日志中间件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

-六神源码网