是這樣的,大概10天前,我突然就想造個輪子,這個輪子的主要做用是收集客戶端的日誌,經過服務端存儲到指定的持久化介質中。客戶端和服務端均可以經過簡單的配置實現快速接入。而後我就畫了一個圖,就是下面這樣的。服務器
這張圖很粗糙,可是足夠表達了個人想法,我甚至和馬桶以及Kent說,能一行代碼搞定的事情,不要搞複雜了,思路很是簡單,就是提供一個客戶端端,經過配置傳輸通道(Redis/RabbitMQ),就能夠把日誌提交到服務器。架構
使用隊列的方式傳輸數據,是出於削峯和解耦的目的,更重要的是,一旦任意語言的客戶端實現了傳輸協議,那麼他們徹底能夠利用本身熟悉的語言的優點去接入 TomatoLog,抱歉,我以爲這個名字還不錯的。工具
至於服務端,經過插件式實現日誌存儲,若是對現有的存儲介質不滿意,那麼能夠擴展本身的持久層,只須要實現 ILogWriter 接口,而後將開發好的庫放到 Plugins 中便可,服務的還提供輸入、過濾、報警等必要的功能;報警功能很是重要,必須提供至少兩種警報通知方式,初步定義爲:SMS/Email.插件
經過比較這兩張圖能夠看出,系統架構內部有很多的變化,特別是服務端方便,在易用性和可擴展性方面增長了很多東西。特別重要的是,真的實現了經過一行代碼將客戶端引入到項目中使用的目的,經過這幾天的不懈努力,我獲得了下面這個通知日誌
今天寫這篇隨筆真的是心血來潮,好消息是,TomaToLog 已經實現並提交到了 GitHub,本文只是預告一下,接下來會有更詳細的接入使用文檔,我只能說,這也許是目前爲止 .NETCore 平臺上最簡單易用的日誌工具。blog
大晚上的發文,正好沒人看,偷偷發。接口