可能你是第一次据说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
好了,这下我真的没啥家底了,都抖露给大家看完了。