摘要: 背景 大家好,考虑到在最近这些天,闲来无事,找了个类库好好研究下别人写的高质量代码,颇有收获,打算和大家分享下。考虑到最近在自学 ASP.NET Core 的相关开发,对 Serilog 这个日志记录库使用较多,好奇其内部的实现原理,趁着这段咸鱼时间好好地研究了下 Serilog 的源码,顺带复习了 阅读全文
posted @ 2020-11-02 16:03 iskcal 阅读(1391) 评论(3) 推荐(8) 编辑
摘要: 上一篇中,我们提到了日志数据是如何进行解析了。然而,Serilog 灵活采用了不同的策略(Policy)决定一个日志对象如何解析到LogEventPropertyValue的子类对象中,即采用了IScalarConversionPolicy以及IDestructingPolicy接口对数据做转换。在 阅读全文
posted @ 2020-11-22 19:28 iskcal 阅读(424) 评论(4) 推荐(1) 编辑
摘要: 上一篇文章中揭露了日志数据的绑定逻辑,主要说明了日志数据绑定的结果信息,即EventProperty结构体和LogEventProperty类,以及日志数据与具名属性Token的绑定类PropertyBinder。在本文中,我们主要对PropertyValueConverter类及其涉及的其他相关类 阅读全文
posted @ 2020-11-19 15:45 iskcal 阅读(485) 评论(0) 推荐(1) 编辑
摘要: 在上一篇中,我们主要研究了Serilog是如何解析字符串模板的,它只是单独对字符串模板的处理,对于日志记录时所附带的数据没有做任何的操作。在本篇中,我们着重研究日志数据的存储方式。(系列目录) 本篇所解决的内容 本文主要讲述在Serilog中日志记录器是如何记录数据的,即在上一篇文章中解析部分的第二 阅读全文
posted @ 2020-11-16 16:17 iskcal 阅读(807) 评论(0) 推荐(0) 编辑
摘要: 大家好啊,上一篇中我们谈到 Serilog 是如何决定日志记录的目的地的,那么从这篇开始,我们着重于 Serilog 是向 Sinks 中记录什么的,这个大功能比较复杂,我尝试再将其再拆分成几个小块方便大家理解。(系列目录) 本篇要解决什么 之前提到,在Logger类中构造对应的LogEvent对象 阅读全文
posted @ 2020-11-12 15:39 iskcal 阅读(1085) 评论(0) 推荐(3) 编辑
摘要: 在上一篇中,我们简单地查看了 Serilog 的整体需求和大体结构。从这一篇开始,本文开始涉及 Serilog 内的相关实现,着重解决第一个问题,即 Serilog 向哪里写入日志数据的。(系列目录) 基础功能 在开始看 Serilog 怎么将日志记录到 Sinks 之前,先看下整体框架。首先,我们 阅读全文
posted @ 2020-11-09 15:39 iskcal 阅读(1008) 评论(0) 推荐(1) 编辑
摘要: 在上两篇文章(链接1和链接2)中,我们通过一个简易 demo 了解到了一个简单的日志记录类库所需要的功能,即一条日志有哪些数据,以及如何通过一次记录的方式将同一条日志消息记录到多个日志媒介中。在本文中,针对 Serilog,我们从以下几个方面来了解 Serilog 核心功能需求和用法,并为下一篇正式 阅读全文
posted @ 2020-11-06 16:00 iskcal 阅读(1710) 评论(2) 推荐(4) 编辑
摘要: 上篇文章中,我们提到,面向过程的代码无法利用配置来减少调用时期的冗余代码,面向对象的编程方式似乎是一种解决方案。在本篇文章中我们利用面向对象的编程方式来看下它是如何做到减少重复代码的。(系列目录) 版本五(改头换面新设计) 甲方:我就不说啥了,你都把我要说的都说完了,你看着改吧。 之前说到,对象可以 阅读全文
posted @ 2020-11-04 15:52 iskcal 阅读(620) 评论(2) 推荐(5) 编辑
摘要: 在阅读 Serilog 类库前,这里通过一个 Demo 的设计来快速理清日志记录库的需求以及较为基础的设计方案是什么。本篇及下篇文章主要通过甲方提需求的方式来逐渐演化 Demo 的架构,最终达到一个较为可用的地步,为 Serilog 源码的阅读奠定基础。ok,话不多说,咱们现在就开始。(系列目录) 阅读全文
posted @ 2020-11-03 11:06 iskcal 阅读(750) 评论(1) 推荐(3) 编辑
摘要: 前几天写了一篇StringBuilder与TextWriter二者之间区别的文章(链接)。当时提了一句没有找到相关源码,于是随后有很多热心人士给出了相关的源码链接(链接),感谢大家。这几天抽了点时间查看了下StringBuilder是如何动态构造字符串的,发现在.NET Core中字符串的构建似乎和 阅读全文
posted @ 2020-09-21 10:56 iskcal 阅读(2837) 评论(4) 推荐(23) 编辑