.Net Core3.0 日志 logging

640?wx_fmt=jpeg

多年的经验,日志记录是软件开发的重要组成部分。没有日志记录机制的系统不是完善的系统。在开发阶段可以通过debug附件进程进行交互调试,可以检测到一些问题,但是在上线之后,日志的记录起到至关重要的作用。它可使我们在系统出现问题之后,排查错误提供依据。

.NET Core3.0内置多种日志记录程序,并且有第三方提供的日志记录程序框架如:log4net,NLog,Serilog,elmah.io等。后面会介绍前三种日志框架如何与.NETcore3.0结合起来进行使用。

内置日志记录提供程序

ASP.NET Core 提供以下提供程序:

  • 控制台-可以在控制台查看日志输出

  • 调试-vs工具 -》开始调试-》输出窗口进行查看日志输出

  • EventSource-可使用PerfView 实用工具收集和查看日志

  • EventLog-》仅在windows系统下可以使用事件查看器查看日志

  • TraceSource

  • AzureAppServicesFile

  • AzureAppServicesBlob

  • ApplicationInsights

创建使用日志

通用主机的应用程序和非主机应用程序使用的方式也是不同的。因为通用主机内部封装了 依赖注入、logging、配置、IHostedService的实现;并且默认配置了控制台,调试,EventSource以及EventLog(仅当在windows上运行时)提供程序。源码如下

 
 
  • 通用主机
添加提供程序

可自行选择提供程序来替换默认提供程序。在CreateHostBuilder时候 调用ClearProviders(),然后添加所需的提供程序。我们创建一个api项目为例

public static IHostBuilder CreateHostBuilder(string[] args) =>	
            Host.CreateDefaultBuilder(args)	
                 .ConfigureLogging(logging =>	
                 {	
                     logging.ClearProviders();//去掉默认添加的日志提供程序	
                     logging.AddConsole();	
                     logging.AddDebug();	
                     logging.AddEventSourceLogger();	
                     logging.AddEventLog();	
                     //logging.AddTraceSource();	

	
                 })	
                .ConfigureWebHostDefaults(webBuilder =>	
                {	
                    webBuilder.UseStartup<Startup>();	
                })

在 Web 应用或托管服务中,由依赖关系注入 (DI) 获取 ILogger。

private readonly ILogger<WeatherForecastController> _logger;	
        public WeatherForecastController(ILogger<WeatherForecastController> logger)	
        {	
            _logger = logger;	
            	
            //可以显示指定类别名称ILoggerFactory logger	
            //logger.CreateLogger("WebApi.Controllers.WeatherForecastController");	
        }
 
 

640?wx_fmt=png

 640?wx_fmt=png

640?wx_fmt=png

  • 非主机控制台
添加提供程序

在创建 LoggerFactory 时调用提供程序的 Add{provider name} 扩展方法:

 
 

在非主机控制台应用中,使用 LoggerFactory 来创建 ILogger。

 
 

640?wx_fmt=png

第三方日志框架

log4net,NLog和Serilog这3种日志记录框架几乎在.NET空间中占主导地位,不需要太多介绍。看看最近6周的下载排名就知道了。如图

640?wx_fmt=png

log4net 在NET Core 3.0使用

640?wx_fmt=png

引用Log4net到项目中,安装NuGet包

 
 
 
 
 
 
 
 

640?wx_fmt=png

NLog 在NET Core 3.0使用

640?wx_fmt=png

引用NLog到项目中,安装NuGet包

 
 
 
 
NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

CreateHostBuilder方法添加

 .UseNLog() //NLog: Setup NLog for Dependency injection

使用  

 
 

640?wx_fmt=png

Serilog 在NET Core 3.0使用

640?wx_fmt=png

引用Serilog到项目中,安装NuGet包

 
 

Main方法添加

 
 
 
 
 
 

640?wx_fmt=png

小结:本文主要讲解NET Core3.0内置的日志提供程序和与第三方日志框架(Log4net,Nlog,Serilog)的使用。

640?wx_fmt=jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值