您现在的位置是:亿华云 > 数据库

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

亿华云2025-10-03 02:34:58【数据库】3人已围观

简介本文转载自微信公众号「UP技术控」,作者 conan5566。转载本文请联系UP技术控公众号。.NET Core 支持适用于各种内置和第三方日志记录提供程序的日志记录 API。 先来看下如何将日志记录

本文转载自微信公众号「UP技术控」,何使作者 conan5566。用第转载本文请联系UP技术控公众号。志记中

 .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 实例。用第

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

public static IHostBuilder CreateHostBuilder(string[] args) =>     Host.CreateDefaultBuilder(args)         .ConfigureLogging(logging =>         {              logging.ClearProviders();             logging.AddConsole();         })         .ConfigureWebHostDefaults(webBuilder =>         {              webBuilder.UseStartup<Startup>();         }); 

使用第三方替代,录提以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 errors         logger.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();     } 云服务器

很赞哦!(2)