是这样的,大概10天前,我突然就想造个轮子,这个轮子的主要做用是收集客户端的日志,经过服务端存储到指定的持久化介质中。客户端和服务端均可以经过简单的配置实现快速接入。而后我就画了一个图,就是下面这样的。服务器
这张图很粗糙,可是足够表达了个人想法,我甚至和马桶以及Kent说,能一行代码搞定的事情,不要搞复杂了,思路很是简单,就是提供一个客户端端,经过配置传输通道(Redis/RabbitMQ),就能够把日志提交到服务器。架构
使用队列的方式传输数据,是出于削峰和解耦的目的,更重要的是,一旦任意语言的客户端实现了传输协议,那么他们彻底能够利用本身熟悉的语言的优点去接入 TomatoLog,抱歉,我以为这个名字还不错的。工具
至于服务端,经过插件式实现日志存储,若是对现有的存储介质不满意,那么能够扩展本身的持久层,只须要实现 ILogWriter 接口,而后将开发好的库放到 Plugins 中便可,服务的还提供输入、过滤、报警等必要的功能;报警功能很是重要,必须提供至少两种警报通知方式,初步定义为:SMS/Email.插件
经过比较这两张图能够看出,系统架构内部有很多的变化,特别是服务端方便,在易用性和可扩展性方面增长了很多东西。特别重要的是,真的实现了经过一行代码将客户端引入到项目中使用的目的,经过这几天的不懈努力,我获得了下面这个通知日志
今天写这篇随笔真的是心血来潮,好消息是,TomaToLog 已经实现并提交到了 GitHub,本文只是预告一下,接下来会有更详细的接入使用文档,我只能说,这也许是目前为止 .NETCore 平台上最简单易用的日志工具。blog
大晚上的发文,正好没人看,偷偷发。接口