微软中国MSDN 点击上方 蓝字关注我们
大家好 , 我是本期的实验室研究员——痴者工良 。 今天我将通过实验和完整的操作过程 , 向大家简单地介绍 .NET Core 中的日志和链路追踪 , 以及通过链路收集日志 。 接下来就让我们一起到实验室中一探究竟吧!
微软MVP实验室研究员
文章图片
痴者工良
身份:高级程序员劝退师
简介:一个小逗比
技术栈:.NET、Go、Web、云计算、物联网、Linux、容器、微服务、Kubernetes
目录
.NET Core 中的日志
- 控制台输出
- 非侵入式日志
- Microsoft.Extensions.Logging
- Trace、Debug
- OpenTracing
- 上下文和跟踪功能
- 在不同进程中跟踪
- 在 ASP.NET Core 中跟踪
- OpenTracing API 和 Jaeger
- 链路追踪实践
程序记录的日志一般有两种作用 , 故障排查、显示程序运行状态 , 当程序发生故障时 , 我们可以通过日志定位问题 , 日志可以给我们留下排查故障的依据 。 很多时候 , 往往会认为日志记录非常简单 , 例如很多程序员只是使用 try-catch{}捕捉异常 , 直接输出到 .txt , 但是这些日志往往无法起到帮助定位问题的作用 , 甚至日志充斥了大量垃圾内容;日志内容全靠人眼一行行扫描 , 或者 Ctrl+F 搜索 , 无法高效率审查日志;日志单纯输出到文本文件中 , 没有很好地管理日志 。
接下来 , 我们将一步步学习日志的编写技巧 , 以及 OpenTracing API 、Jaeger 分布式链路跟踪的相关知识 。
.NET Core 中的日志
控制台输出
最简单的日志 , 就是控制台输出 , 利用 Console.WriteLine 函数直接输出信息 。
下面时一个简单的信息输出 , 当程序调用 SayHello 函数时 , SayHello 会打印信息 。
非侵入式日志
通过控制台 , 我们可以看到 , 为了记录日志 , 我们必须在函数内编写输入日志的代码 , 优缺点这些就不多说了 , 我们可以通过 AOP 框架 , 实现切面编程 , 同一记录日志 。
这里可以使用笔者开源的 CZGL.AOP 框架 , Nuget 中可以搜索到 。
文章图片
编写统一的切入代码 , 这些代码将在函数被调用时执行 。
Before 会在被代理的方法执行前或被代理的属性调用时生效 , 你可以通过 AspectContext 上下文 , 获取、修改传递的参数 。
After 在方法执行后或属性调用时生效 , 你可以通过上下文获取、修改返回值 。
改造 Hello 类 , 代码如下:
-
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
