如何使用第三方日志记录提供程序替代.NET Core中的内置程序
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                如何使用第三方日志记录提供程序替代.NET Core中的内置程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                背景
.NET Core 支持適用于各種內置和第三方日志記錄提供程序的日志記錄 API。?先來看下如何將日志記錄 API 與內置提供程序一起使用。
調用 CreateDefaultBuilder,這將添加以下日志記錄提供程序:
- 控制臺 
- 調試 
- EventSource 
- EventLog:僅限 Windows 
- public class Program {public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}); }
實現思路
若要替代Host.CreateDefaultBuilder 添加的默認日志記錄提供程序集,請調用 ClearProviders 并添加所需的日志記錄提供程序。?例如,以下代碼:
- 調用 ClearProviders 以從生成器中刪除所有 ILoggerProvider 實例。 
- 添加控制臺日志記錄提供程序。 
Nlog案例
使用第三方替代,以Nlog為例
修改?program.cs
using System; using NLog.Web; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Hosting;public static void Main(string[] args) {var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();try{logger.Debug("init main");CreateHostBuilder(args).Build().Run();}catch (Exception exception){//NLog: catch setup errorslogger.Error(exception, "Stopped program because of exception");throw;}finally{// Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)NLog.LogManager.Shutdown();} }public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).ConfigureLogging(logging =>{logging.ClearProviders();logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);}).UseNLog(); // NLog: Setup NLog for Dependency injection寫日志
using Microsoft.Extensions.Logging;public class HomeController : Controller {private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;_logger.LogDebug(1, "NLog injected into HomeController");}public IActionResult Index(){_logger.LogInformation("Hello, this is the index!");return View();}總結
以上是生活随笔為你收集整理的如何使用第三方日志记录提供程序替代.NET Core中的内置程序的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 大会线上同步直播, 来不到现场也可以线上
- 下一篇: 编程去除背景绿幕抠图,基于.NET+Op
