多年的经验,日志记录是软件开发的重要组成部分。没有日志记录机制的系统不是完善的系统。在开发阶段可以通过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");    }

  • 非主机控制台

添加提供程序

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

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

第三方日志框架

log4net,NLog和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)的使用。

.Net Core3.0 日志 logging相关推荐

  1. EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录

    前言 本文主要是讲解EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录 注意拦截器只有EF Core3.0+ 支持,2.1请考虑上下文工厂的形式实现. 说点题外话.. 一晃又大半年没更新技 ...

  2. python 的日志logging模块学习

    2019独角兽企业重金招聘Python工程师标准>>> python 的日志logging模块学习 分类: python 2011-08-02 23:51 8338人阅读 评论(0) ...

  3. 兼容 .NET Core3.0, Natasha 框架实现 隔离域与热编译操作

    关于 Natasha    动态构建已经成为了封装者们的家常便饭,从现有的开发趋势来看,普通反射性能之低,会迫使开发者转向EMIT/表达式树等构建方式,但是无论是EMIT还是表达式树,都会依赖于反射的 ...

  4. 【A】兼容Core3.0后 Natasha 的隔离域与热编译操作。

    文章转载授权级别:A         预计阅读时间:15分钟 一.  2.0预览版本增加了哪些功能 大部分为底层的升级优化,例如: 引擎兼容 Core3.0 优化编译流程,增加编译前语法检测及日志,统 ...

  5. [zz]很详细,涵盖了多数场景!推荐 - python 的日志logging模块学习

    http://blog.csdn.net/yatere/article/details/6655445 1.简单的将日志打印到屏幕 import logging logging.debug('This ...

  6. Python 日志logging模块初探及多线程踩坑(2)

    系列文章: Python 日志logging模块初探及多线程踩坑(1) Python 日志logging模块初探及多线程踩坑(2) 接着上面一篇文章,我们这篇来写一个多进程兼容且无损性能的 Timed ...

  7. Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life

    Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life 学习目标 Python日志Logging 小游戏设计game of life 课后作业(2必做) ...

  8. python多个日志模块怎么隔离_在多个模块中使用Python日志logging

    最好的做法是在每个模块中都有一个像这样定义的logging器: import logging logger = logging.getLogger(__name__) 靠近模块的顶部,然后在模块的其他 ...

  9. Android10.0 日志系统分析(四)-selinux、kernel日志在logd中的实现​-[Android取经之路]

    摘要:本节主要来讲解Android10.0 selinux.kernel日志在logd中的实现,包括LogAudit.LogKlog的源码分析 阅读本文大约需要花费15分钟. 文章首发微信公众号:In ...

最新文章

  1. jenkins获取远程服务器文件,Jenkins用SSH传输文件到远程服务器
  2. PHP配置问题:AppServ安装discuz出错 Fatal error:
  3. M4i—下一代高速数据采集、数字化仪平台
  4. CABasicAnimation fillMode和removedOnCompletion
  5. SAP Commerce Cloud(原Hybris) impex 里的美元(dollar $)符号
  6. .NET Core中使用结果过滤器ResultFilter统一结果返回封装
  7. 华米科技将推出首款真无线耳机 支持降噪还能检测心率?
  8. 以太坊2.0合约余额新增3872 ETH
  9. 交付自动化的探索与展望
  10. Top 10 tough core Java interview questions answers programming
  11. Maven dependency plugin使用
  12. 《上海悠悠接口自动化平台》-4.注册用例集实战演示
  13. 用Java解决牛客网题目JD1年终奖
  14. SecureCRT复制粘贴快捷设置
  15. HDMI转PGA电脑没有声音处理方法
  16. Bresenham 画圆算法原理
  17. 电源管理芯片LDO(Low Dropout Regulator)分析1
  18. 木马是如何穿过防火墙的
  19. JavaScript WebGL 使用图片疑惑点
  20. 德州学院计算机系吧,任传成(计算机系)老师 - 德州学院 - 院校大全

热门文章

  1. 将字符串中的大写字母变成小写字母
  2. C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并
  3. php 执行文件tar打包,利用tar for windows对大量文件进行快速打包
  4. [Hadoop in China 2011] 中兴:NoSQL应用现状及电信业务实践
  5. 城市智慧停车系统方案的产品设计体系介绍
  6. cordova-config.xml配置应用图标
  7. Optaplanner规划引擎的工作原理及简单示例(1)
  8. 导入工程后编译不过,报错: apply plugin: 'com.github.dcendents.android-maven'
  9. Linux中的selinux
  10. iOS 开发之--使用AFNetWorking3.1.0上传单张/多张图片