一. Exceptionless 简介
Exceptionless 是一个开源的实时的日志收集框架, 它可以应用在基于 ASP.NET,ASP.NET Core,web API,Web Forms,WPF,Console,MVC 等技术栈的应用程序中, 并且提供了 REST 接口可以应用在 JavaScript,Node.JS 中. 它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置.
在以前, 我们做日志收集大多使用 Log4net,Nlog 等框架, 在应用程序变得复杂并且集群的时候, 可能传统的方式已经不是很好的适用了, 因为收集各个日志并且分析他们将变得麻烦而且浪费时间.
现在 Exceptionless 团队给我们提供了一个更好的框架来做这件事情, 我认为这是非常伟大并且有意义的, 感谢他们.
二. 使用
这里有两种方式(本地, 远程)
本地需要一定的环境要求(NET 4.6.1 ,Java JDK 1.8+,IIS Express 8+)
远程就比较方便了, 非常的方便, 那么今天就给大家来一波 Exceptionless 远程使用的教程.
三. 注册账号并配置
官网: http://exceptionless.com
GitHub:https://github.com/exceptionless/Exceptionless
关于官方首页访问慢的问题, 那没有办法, 最好翻个梯子, 当然也就只是首页慢了点, 因为首页有谷歌的 API, 管理页面就没有那么卡了 (36ms) 左右.
由于我们使用的远程日志, 我们得进入官方申请账号, 进入官方进行账号注册.
进入创建项目, 输入项目信息, 创建项目!
这里当然可以选择我们喜爱的. NET Core ! 官方已经给你说好了, 那么这个时候你的项目就可以用 Exceptionless 来记录日志了. 那我们来创建一个. NET Core 程序吧?
四. 在程序中进行远程记录
nuget 完 Exceptionless.AspNetCore 之后会出现一个 txt 文件, 这个 txt 文件是给你的一个简单的使用教程, 当然你可以选择删除.
配置中间件
- public void Configure(IApplicationBuilder App, IHostingEnvironment env)
- {
- App.UseExceptionless("xxxxxxxxxxxxxx");
- App.UseMvc();
- }
这个时候你就可以正常使用了, 那么我们现在故意报错一下!
- public ActionResult<IEnumerable<string>> Get()
- {
- throw new Exception("my text info");
- return new string[] { "value1", "value2" };
- }
现在启动我们的浏览器, 报错成功.
那我们的框架收集到了吗? 刷洗一下, 成功记录下来了.
那它替我们收集了什么信息呢? 我们一探究竟! 点进去噢! 发现这真的太棒了.
除了记录一些基本的 http 信息之外, 竟还有系统版本, 系统架构, 电脑版本, 运行时等. 灰常 NB 啊.
当然我们恶意报错是不对的, 可以 trycath 一下, 那么代码就变成了这样.
- try
- {
- throw new ApplicationException(Guid.NewGuid().ToString());
- }
- catch(Exception ex)
- {
- ex.ToExceptionless().Submit();
- }
除了一些异常记录之外, ExceptionLess 还提供了 Log (日志),Feature Usages(功能用途),404,Custom Event(自定义事件). 扩展的东西是在 ExceptionlessClient.Default 类中. 有兴趣的话可以研究.
附日志记录封装类(很简单的那种. 大佬别打我)
- public class ExceptionLessLog :ILog
- {
- /// <summary>
- /// 跟踪
- /// </summary>
- public void Trace(string message, params string[] tags)
- {
- ExceptionlessClient.Default.CreateLog(message, LogLevel.Trace).AddTags(tags).Submit();
- }
- /// <summary>
- /// 调试
- /// </summary>
- public void Debug(string message, params string[] tags)
- {
- ExceptionlessClient.Default.CreateLog(message, LogLevel.Debug).AddTags(tags).Submit();
- }
- /// <summary>
- /// 信息
- /// </summary>
- public void Info(string message, params string[] tags)
- {
- ExceptionlessClient.Default.CreateLog(message, LogLevel.Info).AddTags(tags).Submit();
- }
- /// <summary>
- /// 警告
- /// </summary>
- public void Warn(string message, params string[] tags)
- {
- ExceptionlessClient.Default.CreateLog(message, LogLevel.Warn).AddTags(tags).Submit();
- }
- /// <summary>
- /// 错误
- /// </summary>
- public void Error(string message, params string[] tags)
- {
- ExceptionlessClient.Default.CreateLog(message, LogLevel.Error).AddTags(tags).Submit();
- }
- }
总结:
ExceptionLess 功能非常强大, 你看我都没怎么敲代码就搞定了这么炫酷的功能, 没试过的小伙伴赶紧试一试吧.
来源: https://www.cnblogs.com/ZaraNet/p/10315313.html