Common.Logging源碼解析一

Common.Logging是Apache下的一個開源日誌接口組件,主要用於切換不一樣的日誌庫,由於當前流行的日誌庫有不少向log4j、log4net(log4j的.net版本)等等,因此爲了能靈活的切換不一樣的日誌組件以適應不一樣的系統(在系統的迭代過程當中),因此設計了Common.Logging這個組件,下面廢話很少說開始解析這個組件。
html

一、架構分析web

首先大體瀏覽了下這個組件的架構編程

Common.Logging.Core多線程

Common.Logging架構

觀察文件類型發現如下兩點:函數

(1)、整個組件採用面向接口編程post

(2)、抽象工廠,爲了解耦必然會採用工廠,經過工廠返回接口(固然這是次要的緣由,主要的仍是全部的不一樣的日誌實例是相關或者相互依賴的對象)url

(3)、必然有一個Manager做爲主接口.net

(2)、(3)點若是不明白請參考抽象工廠(AbstractFactory)模式-建立型模式線程

 

 

二、(LogManager)主接口分析

所謂主接口,就是客戶端經過這個類操做日誌實例,因此這個類就肩負了全部的初始化工做,下面開始分析LogManager作了哪些初始化工做,以及大體的順序是怎麼樣的?

(1)、初始化配置文件閱讀器

經過靜態構造函數初始化配置文件閱讀器實例,關於爲何要用靜態構造函數,主要是爲了解決多線程的問題,由於web應用程序是多線程的因此經過靜態構造函數能解決多線程的問題,編譯器會給它加鎖。

DefalutConfigurationReader.cs     --這個類默認採用的是去讀Web.config文件的方法來讀取日誌以及日誌接口的配置

當編譯器執行ConfigurationManager.GetSection()方法時,會觸發ConfigurationSectionHandler類的

這個方法回去讀取配置文件從而生成LogSetting實例。

 

 ok,到這一步,就經過構造函數設置徹底局的配置文件閱讀器實例,下面經過

就能調用配置文件閱讀器實例了,這個實例並不包含配置文件的信息,只是存有如何讀取配置文件的方法

 

(2)、生成日誌實例工廠類

經過這個屬性來建立日誌實例工廠類

 

(3)、開發接口給外部方法

經過這三個方法就能夠經過日誌實例工廠類來獲取對應的日誌實例!

ok,整個(LogManager)主接口分析完畢!

相關文章
相關標籤/搜索