如何使用第三方日志记录提供程序替代.NETCore中的内置程序

本文转载自微信公众号「UP技术控」,作者 conan5566。转载本文请联系UP技术控公众号。

目前创新互联公司已为近千家的企业提供了网站建设、域名、虚拟空间、网站托管、企业网站设计、定海网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

 .NET Core 支持适用于各种内置和第三方日志记录提供程序的日志记录 API。 先来看下如何将日志记录 API 与内置提供程序一起使用。

调用 CreateDefaultBuilder,这将添加以下日志记录提供程序:

控制台

调试

EventSource

EventLog:仅限 Windows

 
 
 
  1. public class Program 
  2.     public static void Main(string[] args) 
  3.     { 
  4.         CreateHostBuilder(args).Build().Run(); 
  5.     } 
  6.  
  7.     public static IHostBuilder CreateHostBuilder(string[] args) => 
  8.         Host.CreateDefaultBuilder(args) 
  9.             .ConfigureWebHostDefaults(webBuilder => 
  10.             { 
  11.                 webBuilder.UseStartup(); 
  12.             }); 

若要替代Host.CreateDefaultBuilder 添加的默认日志记录提供程序集,请调用 ClearProviders 并添加所需的日志记录提供程序。 例如,以下代码:

调用 ClearProviders 以从生成器中删除所有 ILoggerProvider 实例。

添加控制台日志记录提供程序。

 
 
 
  1. public static IHostBuilder CreateHostBuilder(string[] args) => 
  2.     Host.CreateDefaultBuilder(args) 
  3.         .ConfigureLogging(logging => 
  4.         { 
  5.             logging.ClearProviders(); 
  6.             logging.AddConsole(); 
  7.         }) 
  8.         .ConfigureWebHostDefaults(webBuilder => 
  9.         { 
  10.             webBuilder.UseStartup(); 
  11.         }); 

使用第三方替代,以Nlog为例

修改 program.cs

 
 
 
  1. using System; 
  2. using NLog.Web; 
  3. using Microsoft.AspNetCore.Hosting; 
  4. using Microsoft.Extensions.Logging; 
  5. using Microsoft.Extensions.Hosting; 
  6.  
  7. public static void Main(string[] args) 
  8.     var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); 
  9.     try 
  10.     { 
  11.         logger.Debug("init main"); 
  12.         CreateHostBuilder(args).Build().Run(); 
  13.     } 
  14.     catch (Exception exception) 
  15.     { 
  16.         //NLog: catch setup errors 
  17.         logger.Error(exception, "Stopped program because of exception"); 
  18.         throw; 
  19.     } 
  20.     finally 
  21.     { 
  22.         // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux) 
  23.         NLog.LogManager.Shutdown(); 
  24.     } 
  25.  
  26. public static IHostBuilder CreateHostBuilder(string[] args) => 
  27.     Host.CreateDefaultBuilder(args) 
  28.       .ConfigureWebHostDefaults(webBuilder => 
  29.       { 
  30.           webBuilder.UseStartup(); 
  31.       }) 
  32.       .ConfigureLogging(logging => 
  33.       { 
  34.           logging.ClearProviders(); 
  35.           logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); 
  36.       }) 
  37.       .UseNLog();  // NLog: Setup NLog for Dependency injection 

写日志

 
 
 
  1. using Microsoft.Extensions.Logging; 
  2.  
  3. public class HomeController : Controller 
  4.     private readonly ILogger _logger; 
  5.  
  6.     public HomeController(ILogger logger) 
  7.     { 
  8.         _logger = logger; 
  9.         _logger.LogDebug(1, "NLog injected into HomeController"); 
  10.     } 
  11.  
  12.     public IActionResult Index() 
  13.     { 
  14.         _logger.LogInformation("Hello, this is the index!"); 
  15.         return View(); 
  16.     } 

网站栏目:如何使用第三方日志记录提供程序替代.NETCore中的内置程序
URL分享:http://www.mswzjz.com/qtweb/news2/188952.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联