其實這邊文章說是“分布式日志框架”有標題黨的嫌疑。把大家騙過來其實是想讓大家指導一些意見,交流一下經驗。
最近看了一本關於架構方面的書,其中書里面有一句話讓我影響很深刻:在沒有弄清楚需求前就去做架構的人失敗永遠多於成功。
仔細想了想,其實蠻有道理的。
就我個人而言,當我決定做一個框架的時候,我會認為我對需求是了解的,拿着需求就開始定義接口寫代碼,但是一般這個情況,我都會返工,為什么?因為寫不下去了。。。。。
這次的日志框架相對於之前而已,我增加了消息隊列來進行日志的緩沖讀寫已經寫完日志后發送消息通知。
我的構想是用戶調用Log.Write方法,只需要傳入日志實體,在方法中會自動判斷寫到隊列還是直接寫到某個介質中去。
關系圖:
上圖中部分接口作用如下:
LogManager:日志管理器,用戶實例化一個LogManager后只需要調用Write就可以進行寫日志了
ILogProviderBulid:日志提供程序構造器,通過配置文件構造出指定的ILogProvider程序
IQueueProviderBulid:隊列提供程序構造器,同歸配置文件構造出指定的IQueueProvider
INoticeable:消息通知接口
關於Log實體的部分屬性說明:
Code:錯誤碼
ErrorType:錯誤類型 對應的是一個枚舉
Exexception:異常對象
IsDebug:是否屬於Debug模式
IsSendMessage:是否發送消息
Message:用戶自定義消息
代碼的話還沒有寫完,不出意外的話我會在中秋之前把代碼上傳到github上,這個框架肯定會有一些不足,希望大家能夠一起討論,相互交流。先睡了,