ASP.NET Core日志记录功能如何实现式优化?

摘要:[TOC] 内置日志的使用 Logger 是 asp .net core 的内置 service,所以我们就不需要在ConfigureService里面注册了。同时在asp.net core 2.0版本及以后,系统已经在CreateDefa
目录内置日志的使用使用Nlog集成ELK参考 内置日志的使用 Logger 是 asp .net core 的内置 service,所以我们就不需要在ConfigureService里面注册了。同时在asp.net core 2.0版本及以后,系统已经在CreateDefaultBuilder方法里默认配置了输出到Console和Debug窗口的Logger。 .ConfigureLogging(delegate(WebHostBuilderContext hostingContext, ILoggingBuilder logging) { logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); logging.AddConsole(); logging.AddDebug(); }) 所以我们可以Controller里面直接注入ILoggerFactory然后再创建具体的Logger。 private readonly ILogger _logger; public HomeController(ILoggerFactory logger) { _logger = logger.CreateLogger<HomeController>(); } 但是还有更好的方式,Container可以直接提供一个ILogger的实例,这时候呢Logger就会使用T的名字作为日志的类别: private readonly ILogger _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } 然后在【Output】窗口中可以看到输出的日志: LogDemo> info: LogDemo.Controllers.HomeController[0] LogDemo> Return Index view Log到Debug窗口或者Console窗口还是比较方便的,但是正式生产环境中这肯定不够用。正式环境应该Log到文件或者数据库等。接下来试下Nlog。 使用Nlog NuGet添加 NLog.Web.AspNetCore。 <PackageReference Include="Microsoft.AspNetCore.App" /> 添加配置文件 新建一个文件nlog.config(建议全部小写,linux系统中要注意), 并右键点击其属性,将其“复制到输出目录”设置为“始终复制”。
阅读全文