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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一、课程介绍 本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的第六部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集、整理和完善此系列课程! 一、本高级系列课程适合人群如下 1、有一定的NET开发基础。

一、课程介绍

本次分享课程属于《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跟着阿笨一起玩NET

      官方QQ二群(加入):574187616跟着阿笨一起玩NET(二)

      个人讲师课堂主页:http://study.163.com/instructor/2544628.htm?share=2&shareId=2544628

      个人微信公众号课程主页:http://dwz.cn/ABenNET

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
SQL 存储 JSON
更快更强,SLS 推出高性能 SPL 日志查询模式
从海量的日志数据中,按照各种灵活的条件进行即时查询搜索,是可观测场景下的基本需求。本文介绍了 SLS 新推出的高性能 SPL 日志查询模式,支持 Unix 风格级联管道式语法,以及各种丰富的 SQL 处理函数。同时通过计算下推、向量化计算等优化,使得 SPL 查询可以在数秒内处理亿级数据,并支持 SPL 过滤结果分布图、随机翻页等特性。
11912 104
|
27天前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
47 0
|
2月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
197 1
|
3月前
|
消息中间件 监控 搜索推荐
OpenFeign日志组件Logger原理与应用
该文章详细解释了如何在OpenFeign中配置并使用请求和响应的GZIP压缩功能。
|
3月前
|
JSON Go API
一文搞懂 Golang 高性能日志库 - Zap
一文搞懂 Golang 高性能日志库 - Zap
168 2
|
3月前
|
应用服务中间件 nginx Docker
[loki]轻量级日志聚合系统loki快速入门
[loki]轻量级日志聚合系统loki快速入门
130 5
|
4月前
|
SQL 开发框架 前端开发
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
|
3月前
|
Kubernetes API Docker
在K8S中,如何查看kubelet组件的日志?
在K8S中,如何查看kubelet组件的日志?
|
3月前
|
存储 JSON Go
一文搞懂 Golang 高性能日志库 Zerolog
一文搞懂 Golang 高性能日志库 Zerolog
264 0
|
26天前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
165 3