ptions = this.Configuration.GetSection("TomatoLog").Get<EventRabbitMQOptions>();
var client = new TomatoLogClientRabbitMQ(options);
return client;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
上面的代码中,读取了客户端配置文件节点 TomatoLog 并反序列化为 EventRabbitMQOptions 配置对象,然后使用该配置对 TomatoLogClientRabbitMQ 进行了初始化,关于 EventRabbitMQOptions 在配置文件中的配置如下:
"TomatoLog": {
"LogLevel": "Information", // 写入日志级别,大于此级别的日志都将被吸入数据流中
"ProjectLabel": "Example", // 项目标签,可为 null
"ProjectName": "Example", // 项目名称,必须
"SysOptions": { // 是否自动采集主机信息,可配置
"EventId": true,
"IP": true,
"IPList": true,
"MachineName": true,
"ProcessId": true,
"ProcessName": true,
"ThreadId": true,
"Timestamp": true,
"UserName": true
},
"Tags": null, // 项目 Tag ,可 null
"Version": "1.0.0", // 当前项目版本号,可为 null
"Exchange": "TomatoLog-Exchange", // RabbitMQ 中配置的交换机名称
"ExchangeType": "direct", // RabbitMQ 交换机类型
"Host": "RabbitMQ Host ", // RabbitMQ 主机地址
"Password": "RabbitMQ Passworrd", // RabbitMQ 连接密码
"Port": 5672, // RabbitMQ 连接端口
"QueueName": "RabbitMQ Queue", // RabbitMQ 日志队列名称
"RouteKey": "Route Key", // RabbitMQ Route Key,根据 ExchangeType 动态设置
"UserName": "RabbitMQ UserName", // RabbitMQ 连接用户名
"vHost": "RabbitMQ vHost" // RabbitMQ 连接的 vHost
}
这段配置看似复杂,其实非常简单,所有的一切都可以自由配置,在程序中,只需要一行代码初始化即,非常方便。
3.3 将异常写入数据流
在异常发生的时候,将异常写入数据流的操作非常简单,就像下面的代码
** 首先引入命名空间
using TomatoLog.Client.Extensions;
** 处理异常:
public ActionResult<IEnumerable<string>> Get()
{
try
{
throw new NotSupportedException("Media Type");
}
catch (Exception ex)
{
ex.AddTomatoLogAsync();
}
return new string[] { "value1", "value2" };
}
我们上面说过,能一行代码做完的事情就不要搞复杂了,使用 ex.AddTomatoLogAsync(); 就可以将日志写入到数据流中了,非常的简洁高效。如果需要写入自定义的日志信息,可以通过依赖注入获得日志客户端对象,然后写入自定义日志,比如
public async Task<ActionResult<IEnumerable<string>>> Get()
{
await logClient.WriteLogAsync(1029, LogLevel.Warning, "Warning Infomation", "Warning Content", new { LastTime = DateTime.Now, Tips = "Warning" });
return new string[] { "value1", "value2" };
}
3.4 查看服务端收集日志
可以看到,上面我们一共写入了两条日志,分类为 Error 和 Warning,查看文件系统上,在项目 Example 目录下,有两个文件
点击列表进入查看,点击单行日志的任意位置,还可以查看详细信息
3.5 自定义日志查看列
还支持对日志的搜索和分页,搜索语法支持以下三种类型:
** ToFile 存储时:支持直接搜索字符串
** ToMongoDB 存储时: 支持 MongoDB 搜索语法
** ToES 存储时:支持 ElasticSearch 语法
分页支持:当前日志超过 100 行时(默认显示最新 100 条日志),自动出现 Previous/Next 分页导航按钮
结束语
TomatoLog 设计的基本原则是开放、高可扩展、自由、易用,通过简单的封装,让任何一个开发人员都能在 3 分钟内投入使用,享受 TomatoLog 带来的便利性,TomatoLog 只做简单的存储,可以看到,如果选择存储到 MongoDB 或者 ES 中的时候,大家还可以通过其它的日志挖掘工具对日志进一步的搜索和处理。
如果您觉得这个项目还不错,请点击 star ,如果希望加入此项目,成为贡献者,请留下您的 GitHub 账号,通过开源,让 .NETCore 生态越来越好。
喔~对了,欢迎报告BUG!
广州.NET微软技术俱乐部
最后,推广一下广州.NET微软技术俱乐部,欢迎更多的朋友加入我们 .NETCore 这个大家庭、一起学习交流。QQ群:651477282。