您好,登錄后才能下訂單哦!
本次分享課程屬于《C#高級編程實戰(zhàn)技能開發(fā)寶典課程系列》中的第六部分,阿笨后續(xù)會計劃將實際項目中的一些比較實用的關(guān)于C#高級編程的技巧分享出來給大家進行學習,不斷的收集、整理和完善此系列課程!
一、本高級系列課程適合人群如下
1、有一定的NET開發(fā)基礎(chǔ)。
2、喜歡阿笨的干貨分享課程的童鞋們。
二、今天我們要解決的日志痛點問題描述
1)、你是否在為找到一款輕量級日志組件四處尋找而感到煩惱?
2)、你是否在為log4net、nlog繁瑣的配置文件而感到煩惱?
3)、你是否在尋找一款日志文件記錄的格式內(nèi)容簡潔的日志組件而感到煩惱?
4)、你是否在尋找一款可以支持自定義按照功能模塊分類存儲日志文件的組件而感到煩惱?
如果您有遇到以上提及到的其中一點的話,那么恭喜你很幸運看到了阿笨的輕量級EasyLogger日志組件。
廢話不多說,直接上干貨,我們不生產(chǎn)干貨,我們只是干貨的搬運工。
1、C#高效的線程安全隊列ConcurrentQueue實戰(zhàn)運用。
2、C# 線程的掛起與喚醒 (AutoResetEvent,ManualResetEvent)實戰(zhàn)運用。
3、C# 采用生產(chǎn)者消費者隊列模式將日志文件異步的落地在磁盤中。
4、C# EasyLogger實現(xiàn)自定義按照功能模塊分類存儲日志文件。(強烈推薦)
5、C# 微軟單元測試UnitTest項目應(yīng)用程序運用。
6、C# 性能測試器PerformanceTestor運用。
一、實戰(zhàn)背景介紹
在我們實際項目中大家一般的開源日志組件比如:Log4net、NLog等等,?在使用的時候所有功能模塊的日志記錄的信息都依賴同一個配置,特別是在項目中的定時任務(wù)作業(yè)計劃調(diào)度應(yīng)用程序中 ,于是所有的作業(yè)日志信息都在記錄在一個文件中,有時候查找起來,極其不方便。
那么我們能不能按照功能分類記錄日志文件呢?雖然Log4net、NLog?可以通過?配置不同的logger,然后功能根據(jù)不同的LoggerName加載Ilog實例,是可以做到;但是實現(xiàn)起來繁瑣和復雜。所以我們必須自己來造這個新輪子來滿足適合工作中的實際項目需求。
二、EasyLogger特點介紹
1、簡單、容易上手,只需要引入一個DLL文件即可;無需繁瑣的配置文件。
2、支持多線程大并發(fā)同時寫入。
3、支持自定義按照功能模塊分類存儲日志文件。(強烈推薦)
4、支持將日志文件存儲在Elasticsearch全文搜索引擎中。(后續(xù)計劃中)
一、核心實現(xiàn)原理講解
????我們將使用列隊將日志信息先緩存到內(nèi)存,然后我們一直有個線程再從列隊中寫到磁盤上,這樣就可以高速高性能的寫日志了。
二、為什么說是超高性能日志組件?
????EasyLogger內(nèi)部采用典型的生產(chǎn)者消費模式。我們就把速度慢的地方分離出來了,也就是說程序在把日志扔給列隊后,程序的日志部分就算完成了,后面操作磁盤耗時的部分程序是不需要關(guān)心的,由另一個線程操作將日志文件寫在硬盤中。
實現(xiàn)原理圖
項目截圖
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。