TomatoLog-1.1.0实现ILoggerFactory
TomatoLog
TomatoLog 是一个基于 .NETCore 平台的产品。
The TomatoLog 是一个中间件,包含客户端、服务端,非常容易使用和部署。
客户端实现了ILoggerFactory,使用服务注入成功后即可使用,对业务入侵非常小,也支持通过客户端调用写入日志流。
TomatoLog 的客户端和服务端目前都是基于 .NETCore 版本,客户端提供了三种日志流传输方式,目前实现了 Redis/RabbitMQ/Kafka 流。如果希望使用非 .NETCore 平台的客户端,你可以自己开放其它第三方语言的客户端,通过实现 TomatoLog 传输协议,将数据传送到管道(Redis/RabbitMQ/Kafka)中即可。
TomatoLog 服务端还提供了三种存储日志的方式,分别是 File、MongoDB、Elasticsearch,存储方式可以通过配置文件指定。在 TomatoLog 服务端,我们还提供了一个Web 控制台,通过该控制台,可以对日志进行查询、搜索,对服务过滤器进行配置,警报配置、通知发送等等,其中,可使用的警报通知方式有:SMS 和 Email 两种方式,但是,SMS 其本质是一个 Http 请求,通过 SMS 的配置,可以实现向所有提供了 Http 接口的网关发送通知。
TomatoLog 系统架构
Get Started
使用客户端
选择安装以下客户端中的任意一项
Install-Package TomatoLog.Client.Redis
Install-Package TomatoLog.Client.RabbitMQ
Install-Package TomatoLog.Client.Kafka
TomatoLog客户端配置文件 appsetting.json
{
"TomatoLog": {
"LogLevel": "Information",
"ProjectLabel": "Example",
"ProjectName": "Example",
"SysOptions": {
"EventId": true,
"IP": true,
"IPList": true,
"MachineName": true,
"ProcessId": true,
"ProcessName": true,
"ThreadId": true,
"Timestamp": true,
"UserName": true
},
"Tags": null,
"Version": "1.0.0",
"Exchange": "TomatoLog-Exchange",
"ExchangeType": "direct",
"Host": "127.0.0.1",
"Password": "123456",
"Port": 5672,
"QueueName": "TomatoLog-Queue",
"RouteKey": "All",
"UserName": "lgx",
"vHost": "TomatoLog"
}
}
服务注入
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITomatoLogClient>(factory =>
{
var options = this.Configuration.GetSection("TomatoLog").Get<EventRabbitMQOptions>();
var client = new TomatoLogClientRabbitMQ(options);
return client;
});
...
}
配置启用
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory factory, ITomatoLogClient logClient)
{
factory.UseTomatoLogger(logClient);
...
}
使用 TomatoLogClient
[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
private readonly ITomatoLogClient logClient;
private readonly ILogger logger;
public HomeController(ILogger<HomeController> logger, ITomatoLogClient logClient)
{
this.logger = logger;
this.logClient = logClient;
}
[HttpGet]
public async Task<ActionResult<IEnumerable<string>>> Get()
{
// Used by ILogger
this.logger.LogError("测试出错了");
// Used By ITomatoLogClient
try
{
await this.logClient.WriteLogAsync(1029, LogLevel.Warning, "Warning Infomation", "Warning Content", new { LastTime = DateTime.Now, Tips = "Warning" });
throw new NotSupportedException("NotSupported Media Type");
}
catch (Exception ex)
{
await ex.AddTomatoLogAsync();
}
return new string[] { "value1", "value2" };
}
}
部署服务端
首先,下载服务端压缩包文件 版本预览 ,该压缩包仅包含项目运行必需文件,托管该服务端的服务器上必须按照 DotNET Core SDK 2.2+
接下来,解压文件,修改 appsetting.Environment.json 文件将服务器进行配置,将配置好的服务端部署到你的服务器上,可以为 TomatoLog 选择 IIS 或者其它托管方式,服务端默认运行端口为:20272.
编辑服务端配置文件
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"TomatoLog": {
"Cache-Redis": null, // 过滤器会使用该分布式缓存进行策略考量,如果有配置
"Config": {
"SysConfig": "Config/SysConfig.json" // 系统配置文件,可通过Web控制台进行配置
},
"Storage": {
"Type": "ToFile", //ToFile/ToES/ToMongoDB 可以选择的存储方式
"File": "D:\\TomatoLog\\Storage", // 如果Type选择了 ToFile ,则这里必须指定绝对路径
"ES": "http://127.0.0.1:9200/", // 如果Type选择了ToES,这里必须配置 Elasticsearch 服务地址
"MongoDB": "mongodb://root:root@127.0.0.1:27017/admin" //如果Type选择了ToMongoDB,这里必须配置 ToMongoDB 数据库链接
},
"Flow": {
"Type": "RabbitMQ", // Redis/RabbitMQ/Kafaka 这里指定客户端和服务器的传输管道类型,两端配置必须一致
"Redis": {
"Connection": null,
"Channel": "TomatoLogChannel"
},
"RabbitMQ": { // 如果使用了 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 // 运行的消息队列实例数量
},
"Kafka": {
"Group": "TomatoLogServer",
"BootstrapServers": "127.0.0.1:9092",
"Topic": "TomatoLog"
}
}
}
}
番茄日志服务端控制台长什么样
在浏览器中打开地址:http://localhost:20272/
首页看日志列表
日志详情、弹出查看详情、日志搜索、支持ES/MongoDB/File搜索
全局日志处理、警报配置
针对单个项目的详细日志处理、警报配置
一次打包,到处运行
不管是从项目结构还是解决方案,我都强调简单就是最美的根本要求,解决方案的内容虽然看起来很多,但是你也只需要按需引用其中一个客户端就可以了,服务端更是如此,全站都打包在一个 .NETCore 的应用程序中,程序的警报配置都是存储在配置文件中的,无需数据库支持。
TomatoLog-1.1.0实现ILoggerFactory的更多相关文章
- ZAM 3D 制作简单的3D字幕 流程(二)
原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...
- ZAM 3D 制作3D动画字幕 用于Xaml导出
原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...
- 微信小程序省市区选择器对接数据库
前言,小程序本身是带有地区选着器的(网站:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html),由于自己开发的程序的数据是很 ...
- osg编译日志
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...
- TomatoLog 是一个基于 .NETCore 平台的产品。
TomatoLog TomatoLog 是一个基于 .NETCore 平台的产品. The TomatoLog 是一个中间件,包含客户端.服务端,非常容易使用和部署. 客户端实现了ILoggerFac ...
- ASP.NET Core 1.0 开发记录
官方资料: https://github.com/dotnet/core https://docs.microsoft.com/en-us/aspnet/core https://docs.micro ...
- Asp.Net Core 项目实战之权限管理系统(0) 无中生有
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
- [转]Writing Custom Middleware in ASP.NET Core 1.0
本文转自:https://www.exceptionnotfound.net/writing-custom-middleware-in-asp-net-core-1-0/ One of the new ...
随机推荐
- String 的成员函数
本篇是把一些string的成员函数的用法记录下来 size()函数和lenth()函数 s.size()或者s.lenth() 它们都会返回长度,是总长度而不是下标长度 find函数 s.find(s ...
- [剑指offer] 10. 旋转数组的最小数字
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 思路: 利用dp[i]保存盖2*i的矩形有多少种办法. 通过 ...
- 微信小程序post 服务端无法获得参数问题
header中需要改为 "Content-Type": "application/x-www-form-urlencoded"
- jsp定义全局变量:读取properties文件
<%java.util.Properties prop = new java.util.Properties();java.io.InputStream in;in = getClass().g ...
- python带有GIL解释器锁
1.GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定. 2.每个CPU在同一时间只能执行一个线程(在 ...
- npm常用命令(原创)
1.对于我们下载下来的node包,假设该包存在依赖情况执行: npm install(或者npm i) 下载依赖包: 下载依赖成功过后,文件夹内会产生package-lock.json文件: 2.下载 ...
- vmware15pro安装ubuntu18.10时出现显示不全问题
如果这个时候用网上的ALT+左键拖拽根本没有效果 所以这里提供另外一种方式 就是正常安装的时候发现分区部分显示不全 此时点击右上角的橙色小×:询问是否退出 我们点击退出:之后就会来到试用界面 到了这里 ...
- Linux基础管道管理
一.I/O重定向 标准输入,标准输出,标准错误 file descriptors (FD, 文件描述符或Process I/O channels); 进程使用文件描述符来管理打开的文件 [root@l ...
- Permission 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- jquery EasyUi 添加节点、展开所有节点、默认选中第一个节点
感觉easyUi 的树用起来不如 Ext 的树方便,首先,root节点不太好自定义, 异步加载时,只能通过后台判断生成root节点,但是这样一来有一个问题,就是第一次访问界面时, 树的初始化比较慢,大 ...