重新整理 .net core 实践篇—————日志系统之作用域[十七]
前言
前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题。
前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们的日志是错乱的。
如果有一个错误,那么我们只能过知道这个错误是哪里报错了,但是我们不知道触发的流程是什么样的,这对我们的debug不友好。
那么我们这时候就可以设置日志作用域。
正文
日志作用域适合下面的场景:
事务 因为一个事务有多个操作,那么希望这些操作能够有一个标识符,能够展示某一次事务的完整log
复杂的工作流相关的东西,记录一个工作流的具体过程
请求处理过程,就是上面所说的多个用户同时请求的日志错乱的问题,常用哈。
配置
{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    },
    "Console": {
      "IncludeScopes": "true",
      "LogLevel": {
        "Default": "Information",
        "Program": "Trace",
      }
    }
  }
}
测试代码:
class Program
{
	static void Main(string[] args)
	{
		IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
		configurationBuilder.AddJsonFile("appsettings.json",optional:false,reloadOnChange:true);
		var config = configurationBuilder.Build();
		IServiceCollection serviceCollection = new ServiceCollection();
		serviceCollection.AddSingleton<IConfiguration>(p=>config);
		serviceCollection.AddLogging(builder =>
		{
			builder.AddConfiguration(config.GetSection("Logging"));
			builder.AddConsole();
		});
		IServiceProvider service = serviceCollection.BuildServiceProvider();
		var logger = service.GetService<ILogger<Program>>();
		using (logger.BeginScope("Current ScopeId:{scopeId}", Guid.NewGuid()))
		{
			logger.LogInformation("I am info.");
			logger.LogWarning("I am Warning");
			logger.LogError("I am Error");
		}
		Console.ReadKey();
	}
}
结果:

设置IncludeScopes 为true 即可。
而在asp .net core项目中只要设置IncludeScopes 为true,对于每个请求,都是在同一个作用域内,故而ILogger打印的都会加上同一个一个唯一标识。
这里就不要演示了,在细节篇中会写入这个作用域如何实现的,东西比较多,就不放在实践篇了。
结
上述为个人整理,如有错误,望请指出。这一节写的比较少吧,因为在细节篇里面会详细介绍实现,而我们实践开发过程中只需要知道如何开启即可。
下一节:结构化日志
重新整理 .net core 实践篇—————日志系统之作用域[十七]的更多相关文章
- 重新整理 .net core 实践篇—————日志系统之结构化[十八]
		
前言 什么是结构化呢? 结构化,就是将原本没有规律的东西进行有规律话. 就比如我们学习数据结构,需要学习排序然后又要学习查询,说白了这就是一套,没有排序,谈如何查询是没有意义的,因为查询算法就是根据某 ...
 - 重新整理 .net core 实践篇—————日志系统之战地记者[十五]
		
前言 本节开始整理日志相关的东西.先整理一下日志的基本原理. 正文 首先介绍一下包: Microsoft.Extengsion.Logging.Abstrations 这个是接口包. Microsof ...
 - 重新整理 .net core 实践篇—————日志系统之服务与日志之间[十六]
		
前言 前文介绍了一些基本思路,那么这里介绍一下,服务如何与配置文件配合. 正文 服务: public interface ISelfService { void ShowLog(); } public ...
 - 重新整理 .net core 实践篇————配置系统之盟约[五]
		
前言 在asp .net core 中我们会看到一个appsettings.json 文件,它就是我们在服务中的各种配置,是至关重要的一部门. 不管是官方自带的服务,还是我们自己编写的服务都是用它来实 ...
 - 重新整理 .net core 实践篇—————配置系统之军令状[七](配置文件)
		
前言 介绍一下配置系统中的配置文件,很多服务的配置都写在配置文件中,也是配置系统的大头. 正文 在asp .net core 提供了下面几种配置文件格式的读取方式. Microsoft.extensi ...
 - 重新整理 .net core 实践篇—————配置系统之间谍[八](文件监控)
		
前言 前文提及到了当我们的配置文件修改了,那么从 configurationRoot 在此读取会读取到新的数据,本文进行扩展,并从源码方面简单介绍一下,下面内容和前面几节息息相关. 正文 先看一下,如 ...
 - 重新整理 .net core 实践篇—————配置系统之强类型配置[十]
		
前言 前文中我们去获取value值的时候,都是通过configurationRoot 来获取的,如configurationRoot["key"],这种形式. 这种形式有一个不好的 ...
 - 重新整理 .net core 实践篇————配置系统——军令(命令行)[六]
		
前言 前文已经基本写了一下配置文件系统的一些基本原理.本文介绍一下命令行导入配置系统. 正文 要使用的话,引入Microsoft.extensions.Configuration.commandLin ...
 - 重新整理 .net core 实践篇—————配置系统之简单配置中心[十一]
		
前言 市面上已经有很多配置中心集成工具了,故此不会去实践某个框架. 下面链接是apollo 官网的教程,实在太详细了,本文介绍一下扩展数据源,和简单翻翻阅一下apollo 关键部分. apollo 服 ...
 
随机推荐
- 内网穿透工具FRP的使用
			
目录 FRP 使用FRP建立隧道 服务端 客户端
 - wordpress如何隐藏后台位置?
			
2017-02-08 20:43:20 言曌 阅读数 3585更多 分类专栏: WordPress 转载 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本 ...
 - Web中的相对路径和绝对路径
			
前台路径:浏览器端发起的资源请求路径 后台路径:服务器端发起的资源请求路径
 - 分布式日志传输系统Databus(一)--系统介绍
			
Databus系统是微博DIP团队开源的分布式日志传输系统.它是一个分布式.高可用的,用于采集和移动大量日志数据的服务.它基于流式数据的简单而灵活的架构,具备健壮性和容错性,具有故障转移与恢复机制.它 ...
 - 『政善治』Postman工具 — 12、Postman中实现数据驱动
			
目录 1.什么是数据驱动? 2.测试集说明 3.创建请求与准备数据文件 (1)新增学院结果文档内容如下 (2)编写数据文件 (3)在Postman中创建请求 4.实现Postman中的数据驱动 步骤1 ...
 - composer 更新命令及常用命令
			
composer 安装 官方地址:https://getcomposer.org/download/ 下载地址:https://getcomposer.org/Composer-Setup.exe 下 ...
 - Markdown使用概述
			
Markdown使用概述 序言 作为一名编程学习的爱好者和初学者,由于学习编程的过程中总是存在遗忘以及很难动手写起来的问题,所以在看了许多关于编程学习方法的文章之后,选择使用typora作为我的笔记工 ...
 - prometheus nginx-module-vts删除内存区数据
			
项目地址:https://github.com/vozlt/nginx-module-vts 删除所zone内存中的数据 curl localhost/status/control?cmd=delet ...
 - stressapptest工具
			
1.在H桌面V7B04上运行stressapptest工具编译报错.请研发协助! 2.因为stressapptest工具在兆芯和龙芯都能正常运行,所以我怀疑是工具stressapptest未在H桌面V ...
 - Centos 7.4搭建es7.12.0+Skywalking7.8.5
			
Skywalking整体架构图和分布式追踪系统原理:https://blog.csdn.net/weixin_39866487/article/details/111581322 软件包版本1.ela ...