天天看點

C#輕量級高性能日志元件EasyLogger(六)一、課程介紹二、涉及覆寫的知識點三、實戰項目背景介紹四、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内部采用典型的生産者消費模式。我們就把速度慢的地方分離出來了,也就是說程式在把日志扔給列隊後,程式的日志部分就算完成了,後面操作磁盤耗時的部分程式是不需要關心的,由另一個線程操作将日志檔案寫在硬碟中。

C#輕量級高性能日志元件EasyLogger(六)一、課程介紹二、涉及覆寫的知識點三、實戰項目背景介紹四、EasyLogger實作原理五、源碼線上解讀和示範

實作原理圖

五、源碼線上解讀和示範

C#輕量級高性能日志元件EasyLogger(六)一、課程介紹二、涉及覆寫的知識點三、實戰項目背景介紹四、EasyLogger實作原理五、源碼線上解讀和示範

項目截圖

作者:

阿笨

      官方QQ一群(已滿):422315558

C#輕量級高性能日志元件EasyLogger(六)一、課程介紹二、涉及覆寫的知識點三、實戰項目背景介紹四、EasyLogger實作原理五、源碼線上解讀和示範

      官方QQ二群(加入):574187616

C#輕量級高性能日志元件EasyLogger(六)一、課程介紹二、涉及覆寫的知識點三、實戰項目背景介紹四、EasyLogger實作原理五、源碼線上解讀和示範

      個人講師課堂首頁:

http://study.163.com/instructor/2544628.htm?share=2&shareId=2544628

      個人微信公衆号課程首頁:

http://dwz.cn/ABenNET

繼續閱讀