番茄日誌發佈1.0.3版本-增長Kafka支持

番茄日誌(TomatoLog)能作什麼

可能你是第一次據說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

TomatoLog-1.0.3 版本

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);
    }
}

番茄日誌服務端控制檯長什麼樣

首頁看日誌列表

日誌詳情、彈出查看詳情、日誌搜索、支持ES/MongoDB/File搜索

全局日誌處理、警報配置

針對單個項目的詳細日誌處理、警報配置

極簡風格

無論是從項目結構仍是解決方案,我都強調簡單就是最美的根本要求,解決方案的內容雖然看起來不少,可是你也只須要按需引用其中一個客戶端就能夠了,服務端更是如此,全站都打包在一個 .NETCore 的應用程序中,程序的警報配置都是存儲在配置文件中的,無需數據庫支持。優化

看到這裏,其實徹底就能夠點讚了。謝謝你們!

別走,我還有幾個開源工具

優秀的微服務網關Kong的.NETCore中惟一客戶端
https://github.com/lianggx/Kong.Net

基於.NETCore+PostgreSQL的快速開發腳手架
https://github.com/lianggx/mystaging

Asp.NETCore輕鬆學系列的開源實例代碼
https://github.com/lianggx/EasyAspNetCoreDemo

好了,這下我真的沒啥家底了,都抖露給大家看完了。

相關文章
相關標籤/搜索