C#轻量级高性能日志组件EasyLogger(六)

一、课程介绍

本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的第六部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集、整理和完善此系列课程! 一、本高级系列课程适合人群如下 1、有一定的NET开发基础。 2、喜欢阿笨的干货分享课程的童鞋们。 二、今天我们要解决的日志痛点问题描述 1)、你是否在为找到一款轻量级日志组件四处寻找而感到烦恼? 2)、你是否在为log4net、nlog繁琐的配置文件而感到烦恼? 3)、你是否在寻找一款日志文件记录的格式内容简洁的日志组件而感到烦恼? 4)、你是否在寻找一款可以支持自定义按照功能模块分类存储日志文件的组件而感到烦恼? 如果您有遇到以上提及到的其中一点的话,那么恭喜你很幸运看到了阿笨的轻量级EasyLogger日志组件。 废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

二、涉及覆盖的知识点

1、C#高效的线程安全队列ConcurrentQueue实战运用。 2、C# 线程的挂起与唤醒 (AutoResetEvent,ManualResetEvent)实战运用。 3、C# 采用生产者消费者队列模式将日志文件异步的落地在磁盘中。 4、C# EasyLogger实现自定义按照功能模块分类存储日志文件。(强烈推荐) 5、C# 微软单元测试UnitTest项目应用程序运用。 6、C# 性能测试器PerformanceTestor运用。

三、实战项目背景介绍

一、实战背景介绍 在我们实际项目中大家一般的开源日志组件比如:Log4net、NLog等等, 在使用的时候所有功能模块的日志记录的信息都依赖同一个配置,特别是在项目中的定时任务作业计划调度应用程序中 ,于是所有的作业日志信息都在记录在一个文件中,有时候查找起来,极其不方便。 那么我们能不能按照功能分类记录日志文件呢?虽然Log4net、NLog 可以通过 配置不同的logger,然后功能根据不同的LoggerName加载Ilog实例,是可以做到;但是实现起来繁琐和复杂。所以我们必须自己来造这个新轮子来满足适合工作中的实际项目需求。 二、EasyLogger特点介绍 1、简单、容易上手,只需要引入一个DLL文件即可;无需繁琐的配置文件。 2、支持多线程大并发同时写入。 3、支持自定义按照功能模块分类存储日志文件。(强烈推荐) 4、支持将日志文件存储在Elasticsearch全文搜索引擎中。(后续计划中)

四、EasyLogger实现原理

一、核心实现原理讲解     我们将使用列队将日志信息先缓存到内存,然后我们一直有个线程再从列队中写到磁盘上,这样就可以高速高性能的写日志了。 二、为什么说是超高性能日志组件?     EasyLogger内部采用典型的生产者消费模式。我们就把速度慢的地方分离出来了,也就是说程序在把日志扔给列队后,程序的日志部分就算完成了,后面操作磁盘耗时的部分程序是不需要关心的,由另一个线程操作将日志文件写在硬盘中。

实现原理图

五、源码在线解读和演示

项目截图

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏京东技术

【实例分享】Mock框架的三次迭代,让你的单元测试更高效

对于单元测试中的单元,不同的人有不同的看法:可以理解为一个方法,可以理解为一个完整的接口实现,也可以理解为一个完整的功能模块或者是多个功能模块的一个耦合。

1870
来自专栏程序你好

消息通知子系统用户需求

2354
来自专栏ionic3+

App自动化构建及打包发布

Fastlane 就是为了简化和自动化 App 发布或部署的过程的一组工具套装。盗个家族图如下:

1033
来自专栏我是攻城师

重新认识同步与异步,阻塞和非阻塞的概念

在实际的开发中,我们经常会听到同步,异步,阻塞,非阻塞这些编程概念,每次遇到的时候都会蒙圈,然后就各种查网上似是而非的资料,结果越查越迷糊,大部分文章都千篇一律...

1202
来自专栏liuchengxu

如何让 Vim 美观又实用(1)

我学习计算机不久就开始用了 vim,到现在也三四年了,且算是对 vim 有了一定的控制力。在这里分享一下使用过程中的一些“心路历程”,说实话,要留意的小地方有很...

1232
来自专栏杨建荣的学习笔记

运维中的接入管理梳理

数据库层的接入可以提炼出DAO层,通过工厂模式来提供灵活的配置接入,这会是一个通用的接口,同时其他数据库的接入也可以通过这种方式带来接入,提炼的结果就是...

982
来自专栏运维小白

19.2 zabbix监控介绍

zabbix监控介绍 C/S架构,基于C++开发,监控中心支持web界面配置和管理 zabbix软件,是C/S架构:有一个服务端,去客户端抓数据。在客户端必须...

23510
来自专栏程序猿DD

数据异构的武器:BINLOG+MQ

作者:新栋BOOK 原文:https://my.oschina.net/wangxindong/blog/1531596 摘要: 分库分表中有一个最为常见的场景...

4917
来自专栏Java帮帮-微信公众号-技术文章全总结

Java在游戏服务器开发中应用【面试+提高】

Java在游戏服务器开发中的应用 随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户...

63011
来自专栏FreeBuf

十大跨浏览器测试工具

在多个平台上测试多种浏览器不但是很困难的 – 它几乎不可能的,因为没有那些好的测试工具。今天,我们就为大家提供很多涉及到跨浏览器测试的选择,并且告诉你那些“顶级...

2306

扫码关注云+社区

领取腾讯云代金券