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

本文介绍了如何在.NET Core中使用日志记录API,包括与内置提供程序如控制台、调试和EventSource的集成,以及如何清除默认提供程序并添加自定义的日志记录,如NLog。示例代码展示了如何配置NLog并将其注入到应用程序中,以及如何在控制器中使用日志记录API进行调试和信息记录。
摘要由CSDN通过智能技术生成

.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();    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值