设为首页 加入收藏

TOP

深度长文-我花了10天时间造了个轮子,你们可能会有兴趣(二)
2019-09-17 18:58:19 】 浏览:76
Tags:深度 长文 花了 时间 轮子 你们 可能 兴趣
Log\\Storage", "ES": "http://127.0.0.1:9200/", "MongoDB": "mongodb://root:root@127.0.0.1:27017/admin", "Others":null }, "Flow": { "Type": "RabbitMQ", // Redis/RabbitMQ/Kafaka "Redis": { "Connection": null, "Channel": "TomatoLogChannel" }, "RabbitMQ": { "Host": "127.0.0.1", "Port": 5672, "UserName": "root", "Password": "123456", "vHost": "TomatoLog", "Exchange": "TomatoLog-Exchange", "ExchangeType": "direct", "QueueName": "TomatoLog-Queue", "RouteKey": "All", "Channels": 1 // RabbitMQ client instance quantity }, "Kafka": null } } }

服务配置文件包含一个主节点 TomatoLog,下面内置 4 个子节点,分别是:

** Cache-Redis
该节点指示在服务对日志进行筛选、清洗的过程中,会将策略写入缓存,默认情况下,策略被写入本地缓存,如果指定分布式缓存,则使用分布式缓存,强烈推荐配置分布式缓存,在服务进行重启或者更新的时候,策略将可以被持续计数。

** Config
此节点下配置了两个系统配置文件,分别是 SysConfig 和 ProConfig,这代表着服务对日志的清洗、过滤、警报的配置,无需改动这两个文件,因为我们提供了更友好的 Web 控制台进行配置,后面会有介绍。

** Storage
此节点非常重要,决定了日志的存储介质,首先是 Type ,可以指定 //ToFile/ToES/ToMongoDB 中的任意一种,目前,TomatoLog 的存储是通过接口实现的插件进行反射调用,所有的存储插件都存放在程序目录下的 Plugins 目录下

如果你认为有必要重写插件,在存储前做一些其它的工作的话,你还可以通过实现 TomatoLog.Common 程序集中定义的 ILogWriter 接口,然后将插件放入 Plugins 目录下,覆盖 //ToFile/ToES/ToMongoDB 中的一种插件,设置 Type 指定为你实现的插件名称即可。或者,你还可以自己实现一个全新的插件,如实现了一个将日志存储到 Redis 的插件 ToRedis,则将设置 "Type":"ToRedis",并且将 ToRedis 需要的配置写入到节点 Others 中自行读取实现,因为 ILogWriter 的默认实现 LogWriter 抽象类的构造参数接收了一个实体对象

    public class StorageOptions
    {
        public StorageType Type { get; set; }
        public string File { get; set; }
        public string ES { get; set; }
        public string MongoDB { get; set; }
        public string Others { get; set; }
    }

ToRedis 插件可以通过继承 LogWriter 获得该配置节点。

** Flow

Flow 节点表示数据流的选择,准备支持 3 中数据流,但是因为精力有限,特别是对 Kafka 也不是很熟悉,目前只实现了 Redis/RabbitMQ 两种方式,目前来看,基本够用,Flow 节点下面的子节点就是对数据流节点的配置,选择 Redis 就配置 Flow.Redis ,如果使用 RabbitMQ,则配置 Flow.RabbitMQ 节点。

2.2 启动服务

在服务配置完成后,就可以使用 dotnet TomatoLog.Server.dll 启动服务程序,可以看到, TomatoLog 侦听的端口为:20272.

在浏览器中输入网址:http://localhost:20272/,查看 Web 控制台

目前可以看到,因为没有产生日志,所以首页是一片空白,但是没有关系,下面介绍另一个强大的功能:配置

2.3 系统全局配置

控制台上还有两个导航按钮 “Config”、“Project”,点击查看 Config

** 警报配置

Enable:是否启用警报通知,值为:true/false
Report stage(Seconds):警报周期,时间:秒
Trigger threshold:触发阈值,和 Report stage(Seconds) 配合使用,即 xx 秒内发生 x 次后 发送通知,并重置计数器
Monitor Levels:警报级别,支持 Trace;Debug;Information;Warning;Error;Critical;None,多个 Level 以 分号进行分隔。

** 短信通知配置

此通知配置非常强大,基于 Http 请求,不只局限于 SMS,所有可以被 Http 请求的网关地址都可以配置到这里,通知内容支持系统变量(见下面附录)

** 邮件通知配置

可以配置邮件通知(推荐测试服启用,跟踪BUG),邮件主题和内容支持系统变量(见下面附录),支持 Html 邮件内容

** 附录:系统变量

上面列出了系统支持的所有内置变量,可在 SMS 和 Email 通知中配置使用,系统变量的使用如上图,必须使用大括号进行包围。

2.4 针对项目的单独配置

除了系统全局配置,TomatoLog 还支持针对每个项目进行独立通知设置,方便项目管理和跟踪,项目通知配置和全局配置一致,

项目通知配置将覆盖全局配置(如果有配置的话)

3. 客户端的使用演示

首先,建立一个演示项目 Example ,该项目为 Asp.NETCore WebApi 项目。

3.1 安装客户端组件

接下来在 Nuget 上搜索包 TomatoLog ,由于服务器配置了使用数据流类型为 RabbitMQ,这里选择安装 TomatoLog.Client.RabbitMQ-1.0.2

3.2 将客户端注入服务中
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<ITomatoLogClient, TomatoLogClientRabbitMQ>(factory =>
            {
                var o
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇进行API开发选gRPC还是HTTP APIs? 下一篇【C#】【对象转XML】xml序列化

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目