可能你是第一次據說TomatoLog,不要緊,我能夠從頭告訴你,經過了解番茄日誌,但願能幫助有須要的朋友,番茄日誌處理將大大下降你採集、分析、處理日誌的過程。git
TomatoLog 是一個基於 .NETCore 平臺的日誌處理組件,包含客戶端、服務端,很是容易使用和部署。github
TomatoLog 的客戶端和服務端目前都是基於 .NETCore 版本,客戶端提供了三種日誌流傳輸方式,目前實現了 Redis/RabbitMQ/Kafka流。若是但願使用非 .NETCore 平臺的客戶端,你能夠本身開放其它第三方語言的客戶端,經過實現 TomatoLog 傳輸協議,將數據傳送到管道(Redis/RabbitMQ/Kafka)中便可。mongodb
TomatoLog 服務端還提供了三種存儲日誌的方式,分別是 File、MongoDB、Elasticsearch,存儲方式能夠經過配置文件指定。在 TomatoLog 服務端,咱們還提供了一個Web 控制檯,經過該控制檯,能夠對日誌進行查詢、搜索,對服務過濾器進行配置,警報配置、通知發送等等數據庫
其中,可以使用的警報通知方式有:SMS 和 Email 兩種方式,可是,SMS 其本質是一個 Http 請求,經過 SMS 的配置,能夠實現向全部提供了 Http 接口的網關發送通知。服務器
爲了開發支持Kafka,還得學習Kafka/Zookeeper,爲了使用Kafka-Manager控制檯,還學習Scala/sbt編譯雅虎這個破項目,控制檯我就起了四個,不說了,看圖。async
TomatoLogServer 服務器版本 1.0.3 ,主要增長了對Kafka的支持,服務端作了一些優化,在配置上,幾乎沒有改動,只須要在原來的基礎上增長Kafka配置便可微服務
"Kafka": { "Group": "TomatoLogServer", "BootstrapServers": "127.0.0.1:9092", "Topic": "TomatoLog" }
同時也增長了Kafka客戶端的支持,當前版本爲:1.0.3工具
Install-Package TomatoLog.Client.Kafka
使用方式和其它Redis/RabbitMQ客戶端是沒有任何區別的,主要看下面的 WriteLogAsync() 方法,只要作好了 TomatoLogClientKafka 的配置,剩下的,就是調用 Exception 的擴展方法 ex.AddTomatoLogAsync()學習
public class TomatoLogClientKafkaTest { [Fact] public async Task WriteLogAsync() { int i = 0; for (; i < 10; i++) { try { throw new Exception("Kafka throw exception"); } catch (Exception ex) { ex.Data["connection"] = "127.0.0.1"; await ex.AddTomatoLogAsync(1320); } } Assert.Equal(10, i); } ITomatoLogClient client; public TomatoLogClientKafkaTest() { var options = new EventKafkaOptions { Logger = null, LogLevel = Microsoft.Extensions.Logging.LogLevel.Information, ProjectLabel = "20272", ProjectName = "TomatoLog", SysOptions = new EventSysOptions { EventId = true, IP = true, IPList = true, MachineName = true, ProcessId = true, ProcessName = true, ThreadId = true, Timestamp = true, UserName = true }, Tags = null, Version = "1.0.1", BootstrapServers = "127.0.0.1:9092", Topic = "TomatoLog" }; client = new TomatoLogClientKafka(options); } }
無論是從項目結構仍是解決方案,我都強調簡單就是最美的根本要求,解決方案的內容雖然看起來不少,可是你也只須要按需引用其中一個客戶端就能夠了,服務端更是如此,全站都打包在一個 .NETCore 的應用程序中,程序的警報配置都是存儲在配置文件中的,無需數據庫支持。優化
看到這裏,其實徹底就能夠點讚了。謝謝你們!
優秀的微服務網關Kong的.NETCore中惟一客戶端
https://github.com/lianggx/Kong.Net
基於.NETCore+PostgreSQL的快速開發腳手架
https://github.com/lianggx/mystaging
Asp.NETCore輕鬆學系列的開源實例代碼
https://github.com/lianggx/EasyAspNetCoreDemo
好了,這下我真的沒啥家底了,都抖露給大家看完了。