1、介绍

  Logging组件是微软实现的日志记录组件包括控制台(Console)、调试(Debug)、事件日志(EventLog)和TraceSource,但是没有实现最常用用的文件记录日志功能(可以用其他第三方的如NLog、Log4Net。之前写过NLog使用的文章)。

2、默认配置

  新建.Net Core Web Api项目,添加下面代码。

运行结果如下:

我刚开始接触的时候,我就有一个疑问我根本没有配置关于Logger的任何代码,仅仅写了注入,为什么会起作用呢?最后我发现其实是在Program类中使用了微软默认的配置。

下面为CreateDefaultBuilder方法的部分源码,整个源码在 https://github.com/aspnet/MetaPackages,可以看出在使用模板创建项目的时候,默认添加了控制台和调试日志组件,并从appsettings.json中读取配置。

3、建立自己的Logging配置

  首先修改Program类

修改Startup类如下面,此类的执行顺序为 Startup构造函数 > ConfigureServices > Configure

这种结构就比较清晰明了。

4、Logging源码解析

  三种配置其实都是为了注入日志相关的服务,但是调用的方法稍有不同。现在我们以第二种配置来详细看看其注入过程。首先调用AddLogging方法,其实现源码如下:

接着会调用AddConfiguration

下面来看打印日志的具体实现:

下面具体看一下Console的打印实现:

首先ConsoleLogger实现了ILogger的Log方法,并在方法中调用WriteMessage方法

 下面看日志被放入队列后的具体实现: 

原文地址:https://www.cnblogs.com/MicroHeart/p/9341286.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.Net Core中的日志组件(Logging)相关推荐

  1. .NET Core中的验证组件FluentValidation的实战分享

    今天有人问我能不能出一篇FluentValidation的教程,刚好今天在实现我们的.NET Core实战项目之CMS的修改密码部分的功能中有用到FluentValidation,所以就以修改用户密码 ...

  2. Asp.Net Core中利用Seq组件展示结构化日志功能

    在一次.Net Core小项目的开发中,掌握的不够深入,对日志记录并没有好好利用,以至于一出现异常问题,都得跑动服务器上查看,那时一度怀疑自己肯定没学好,不然这一块日志不可能需要自己扒服务器日志来查看 ...

  3. KSO-netcore 中使用日志组件Nlog

    简介 在所有的应用程序中,日志功能是不可或缺的模块,我们可以根据日志信息进行调试.查看产生的错误信息,在ASP.NET Core中我们可以使用log4net或者NLog日志组件来实现记录日志的功能,这 ...

  4. .net中,日志组件 Nlog,SerialLog, Log4Net的用法

    源码:https://download.csdn.net/download/helldoger/85778816 以.NET6 Winform为例 <Project Sdk="Micr ...

  5. Python项目中 封装日志模块logging 及快速调用方法

    前言 在 Python 中,可以直接用自带的 logging 模块来记录日志,但是在使用时我们需要配置一些 Handler.Formatter 来进行一些处理,比如把日志输出到不同的位置,或者设置一个 ...

  6. 在 ASP.NET Core 中使用 Serilog 使用 Fluentd 将日志写入 Elasticsearch

    在 ASP.NET Core 中使用 Serilog 使用 Fluentd 将日志写入 Elasticsearch 原文来自:https://andrewlock.net/writing-logs-t ...

  7. ASP.NET Core 源码学习之 Logging[2]:Configure

    在上一章中,我们对 ASP.NET Logging 系统做了一个整体的介绍,而在本章中则开始从最基本的配置开始,逐步深入到源码当中去. 默认配置 在 ASP.NET Core 2.0 中,对默认配置做 ...

  8. asp.net core 集成 log4net 日志框架

    asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...

  9. 深入源码理解.NET Core中Startup的注册及运行

    开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点.通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可 ...

最新文章

  1. git flow版本
  2. ETH Zurich提出新型网络「ROAD-Net」,解决语义分割域适配问题
  3. python setup用法_python的构建工具setup.py的方法使用示例
  4. python mkl freebsd_freebsd下之简单安装python
  5. 幼儿园故事导入语案例_幼儿园小班安全教案
  6. CTF入门--题目介绍
  7. ionic 父子组件传值
  8. nginx利用try_files实现多个源
  9. Add library ‘Maven: ..to classpath
  10. 递增的整数序列链表的插入_leetcode673_go_最长递增子序列的个数
  11. 全国省份城市区域代码
  12. Mac制作映像(dmg)文件详细步骤
  13. 公司研制的CPU卡燃气表正式投放北京市场
  14. mysql 8.0.22详细安装步骤
  15. 计算机文献检索语言,文献检索语言
  16. 华为会强迫升级鸿蒙,华为手机升级鸿蒙系统好用吗
  17. 【福利贴】教你如何移动联通电信免流
  18. 数据分析-用python分析中国五大城市的PM2.5值(ols建立回归模型)
  19. 阿里巴巴招募AI鉴黄体验官,日薪1000,小姐姐优先,快看看你是否符合
  20. Rstudio永久修改当前工作路径

热门文章

  1. sql 中 limit 与 limit,offset连用的区别
  2. 《版式设计——日本平面设计师参考手册》—第1章应用对象样式
  3. PHP提取字符串中的数字
  4. solrcloud线上创建collection,修改默认配置
  5. 如何使用Instruments诊断App(Swift版):起步
  6. 调用带有 out 参数的方法时检查弃元参数
  7. C# 图像模板匹配并标注
  8. StackExchange.Redis 命令扩展
  9. Magicodes.IE 2.5.6.2发布
  10. 由社区推动的 .NET 6 新 API