域名注册了如何做网站,wordpress 整合ucenter,海外永久不收费的加速器,运城推广型网站建设多年的经验#xff0c;日志记录是软件开发的重要组成部分。没有日志记录机制的系统不是完善的系统。在开发阶段可以通过debug附件进程进行交互调试#xff0c;可以检测到一些问题#xff0c;但是在上线之后#xff0c;日志的记录起到至关重要的作用。它可使我们在系统出现问… 多年的经验日志记录是软件开发的重要组成部分。没有日志记录机制的系统不是完善的系统。在开发阶段可以通过debug附件进程进行交互调试可以检测到一些问题但是在上线之后日志的记录起到至关重要的作用。它可使我们在系统出现问题之后排查错误提供依据。.NET Core3.0内置多种日志记录程序并且有第三方提供的日志记录程序框架如log4netNLogSerilogelmah.io等。后面会介绍前三种日志框架如何与.NETcore3.0结合起来进行使用。内置日志记录提供程序ASP.NET Core 提供以下提供程序控制台-可以在控制台查看日志输出调试-vs工具 -》开始调试-》输出窗口进行查看日志输出EventSource-可使用PerfView 实用工具收集和查看日志EventLog-》仅在windows系统下可以使用事件查看器查看日志TraceSourceAzureAppServicesFileAzureAppServicesBlobApplicationInsights创建使用日志通用主机的应用程序和非主机应用程序使用的方式也是不同的。因为通用主机内部封装了 依赖注入、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.UseStartupStartup(); })在 Web 应用或托管服务中由依赖关系注入 (DI) 获取 ILogger。private readonly ILoggerWeatherForecastController _logger; public WeatherForecastController(ILoggerWeatherForecastController logger) { _logger logger; //可以显示指定类别名称ILoggerFactory logger //logger.CreateLogger(WebApi.Controllers.WeatherForecastController); } 非主机控制台添加提供程序在创建 LoggerFactory 时调用提供程序的 Add{provider name} 扩展方法在非主机控制台应用中使用 LoggerFactory 来创建 ILogger。第三方日志框架log4netNLog和Serilog这3种日志记录框架几乎在.NET空间中占主导地位不需要太多介绍。看看最近6周的下载排名就知道了。如图log4net 在NET Core 3.0使用引用Log4net到项目中安装NuGet包NLog 在NET Core 3.0使用引用NLog到项目中安装NuGet包NLogBuilder.ConfigureNLog(nlog.config).GetCurrentClassLogger();CreateHostBuilder方法添加 .UseNLog() //NLog: Setup NLog for Dependency injection使用 Serilog 在NET Core 3.0使用引用Serilog到项目中安装NuGet包Main方法添加小结本文主要讲解NET Core3.0内置的日志提供程序和与第三方日志框架Log4net,Nlog,Serilog的使用。