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内部采用典型的生产者消费模式。我们就把速度慢的地方分离出来了,也就是说程序在把日志扔给列队后,程序的日志部分就算完成了,后面操作磁盘耗时的部分程序是不需要关心的,由另一个线程操作将日志文件写在硬盘中。
五、源码在线解读和演示
作者:阿笨
官方QQ一群(已满):422315558
官方QQ二群(加入):574187616
个人讲师课堂主页:http://study.163.com/instructor/2544628.htm?share=2&shareId=2544628
个人微信公众号课程主页:http://dwz.cn/ABenNET
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python环境配置
Python作为Google的第三大开发语言、Dropbox的基础语言已经已经越来越得到人们的喜爱,尤其是运维人员,而且很多优秀的运维工具都是Python开发的,引用Python作者的一句话:人生苦短,我用Python。 下面我就和大家简单分享下我在用Python进行开发时使用的一些Python配置方面的小工具。 Python版本管理 我以前使用pythonbrew来管理我的开发机上面多个Python解析器,现在我使用pyenv来管理我的Python解析器,github地址,安装和使用直接见github里面的README就行了,用起来还是比较简单的,通过pyenv可以管理多个Python版本并共存,随时切换想要使用的版本,且这个工具本身不依赖于Python。 环境依赖 根据12Factor规则,应用程序要显示的声明依赖,这里我能想到的一个很好的例子是Ruby的Gemfile,这个文件里面声明了一个Ruby应用程序所依赖的所有依赖,Gemfile就是对Ruby程序的依赖声明,在Python里面对依赖进行声明我想到了pip。 依赖申明好了,不同的应用程序间如何进行依赖隔离呢,同样Ruby程...
- 下一篇
初学Python——RabbitMQ的安装
记录踩坑之路,本篇文章主要摘抄自CSDN博客https://blog.csdn.net/weixin_39735923/article/details/79288578 Windows10环境下安装RabbtiMQ的步骤 第一步:下载并安装Erlang 原因:RabbitMQ服务器端代码是使用Erlang语言编写的,它依赖于Erlang运行。 下载地址:http://www.erlang.org/downloads 根据本机系统的位数选择合适的版本。 双击下载好的安装包,开始安装 安装完成后要配置环境变量 在系统环境变量中新建 变量名:ERLANG_HOME 变量值就是刚才erlang的安装地址,点击确定。 然后双击系统变量path 点击“新建”,将%ERLANG_HOME%\bin加入到path中。 最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。 第二步:下载并安装RabbitMQ 下载地址:http://www.rabbitmq.com/download.html 双击下载后的.exe文件,安装过程与erlang的安装过程相同。 Ra...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程