Exceptionless - .Net Core开源日志框架
Exceptionless - .Net Core开源日志框架
今天要给大家介绍的Exceptionless是一个基于 .net core的开源日志框架,Exceptionless的意思是:没有异常。Exceptionless可以为ASP.NET,Web API,WebForms,WPF,控制台和MVC应用程序提供实时错误,功能和日志报告。它将收集的信息组织成简单的可操作数据,这将有助于您的应用程序变得无异常。最重要的是,它是开源的!
快速入门Exceptionless支持直接调用官网服务记录日志,这样可以非常快速地在我们的应用中使用Exceptionless,下面我们来看看具体的步骤。 1. 创建免费账号在https://be.exceptionless.io/signup中创建一个免费账号,只需要提供用户名、密码以及邮箱即可,非常简单。 2. 登录并创建项目3. 获得属于这个项目的API密钥4. 配置应用在我们的应用中安装Exceptionless,在Nuget中直接搜索 Install-Package Exceptionless.AspNetCore 在Startup.cs的 using Exceptionless; public void Configure(IApplicationBuilder app,IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseExceptionless("[你的API密钥]"); app.UseMvc(); } 在代码中捕获并记录异常。这里我为了马上看出效果,自己主动抛了一个异常 // GET api/values/{id} [HttpGet("{id}")] public ActionResult<string> Get(int id) { try { throw new Exception(); } catch (Exception ex) { ex.ToExceptionless().Submit(); } return $"value {id}"; } 5. 运行并查看日志报告我这里是直接用Debug模式运行测试。这里有个Dashboard显示异常记录的统计信息 点击某一条具体的异常记录,可以查看具体的异常信息 这就是使用官网提供服务的流程。使用非常的简单,但在使用上也会存在一定的问题。
本地部署ExceptionlessExceptionless是开源的,所以它也支持我们进行本地化部署,官方文档说明在这里https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting 前期准备
1. 下载Exceptionless最新版Releasehttps://github.com/exceptionless/Exceptionless/releases 2. 快速启动Exceptionless解压Exceptionless压缩包,直接双击
文件夹 不过,很不幸,我并没有马上成功。。CMD输出以下错误信息 Invoke-WebRequest : 请求被中止: 未能创建 SSL/TLS 安全通道。 一顿搜索得到的结论就是要在请求命令前面多加一行下面的命令 [System.Net.ServicePointManager]::SecurityProtocol=[System.Net.SecurityProtocolType]::Tls12 根源和解决办法是在这里找到的 大概意思就是我的电脑同时安装了.NET 4.0 和.NET 4.5或更高版本,这导致加密协议的默认值为 于是,我打开 (当然,这里也可以用另外一个方法绕过这个问题,就是看看Powershell脚本中要下载的是什么文件,自己单独先把文件下载好放在它指定的位置就可以了,我就是这么干的。。不过我是因为Powershell这个下载太慢了) OK,重新执行 看起来像是正常启动了,然后,浏览器中打开 这又是为何呀?看了一下 结果一查,还真的是,我的有道词典。。 好吧,我换 首先是 Start-Website $wwwroot 50001 Start-Process "http://localhost:50001" 然后是 <add key="BaseURL" value="http://localhost:50001/#" /> 还有很容易被忽略的 angular.module('app.config',[]) .constant('BASE_URL','http://localhost:50001') 再一次执行 因为ElasticSearch和Kibana都正常启动,而且请求也正常,意味着 这文件上面核心的就是一句 cmd /c start cmd /k "$iisExpressExe" "/port:$port" "/path:$path" 根据我的环境,它最终运行的脚本应该是这样的 cmd /c start cmd /k "C:Program FilesIIS Expressiisexpress.exe" "/port:50001" "/path:D:Program FilesExceptionless.4.1.2861wwwroot" 好吧,这个时候我才留意到有这么一个窗口(回家换了个电脑继续。。大家自动忽略截图的不一致) 'C:Program' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 那我大概猜到是什么问题了,这里应该是路径 "C:Program FilesIIS Expressiisexpress.exe" "/port:50001" "/path:D:Program FilesExceptionless.4.1.2861wwwroot" Bingo,就是它了 那如果非得要在Powershell来执行,有没有办法呢?其实,也是有的,但因为我对Powershell不太熟悉,所以只找了一种,但是感觉这不是最优解 把前面的命令行改为下面这个 cmd /c start cmd /k "C:Progra~1IISExp~1iisexpress.exe" "/port:50001" "/path:D:Program FilesExceptionless.4.1.2861wwwroot" 这里就是把 这是我在Windows系统下部署Exceptionless过程中遇到的问题,但因为在官网上的介绍是直接双击运行 我这里就没有继续纠结怎么修改 当然了,前面这么麻烦只是为了找出问题的原因,但如果回到本质,这个脚本就是为了用IIS Express部署Exceptionless Web站点,那其实我们更普遍的是直接用IIS管理器新建一个站点就可以了。 重新整理这个启动流程,就是下载并启动ElasticSearch和Kibana服务,然后部署Exceptionless Web站点。 所以,我们可以按照下面这个步骤:
3. Exceptionless注册用户这里跟前面使用官网服务时是一样的,注册用户,新建项目,获得Api密钥 4. 应用集成本地Exceptionless在应用中使用本地服务跟官网服务也基本相同,只是需要将默认的Exceptionless服务地址改为本地的
ExceptionlessClient.Default.Configuration.ApiKey = Configuration.GetSection("Exceptionless:ApiKey").Value; ExceptionlessClient.Default.Configuration.ServerUrl = Configuration.GetSection("Exceptionless:ServerUrl").Value; app.UseExceptionless(); 这里我就将两个配置项放到了 "Exceptionless": { "ApiKey": "4pyCA8KFr3YekuVStkIbaE7Hqq1YIZAR6vH8OrYh","ServerUrl": "http://localhost:50001" } 运行之后就可以看到Exceptionless上有异常的记录 而且,我们也可以看到异常记录数量是没有限制的 总结本文主要是介绍了如何快速应用Exceptionless记录异常,以及如何进行本地化部署,然后就是在我自己进行试验的过程中踩到的坑,当然了Exceptionless还有很多功能,以及本地化时的一些设置在本文中都是没有涉及到的,目前我介绍的也就是一个能用的阶段,哈哈,后面我有深入的时候再给大家总结。今天就先跟大家介绍到这里,希望大家能持续关注我们。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET安全角色和权限
- ASP.NET身份两个因素不起作用 – Cookie问题?
- ASP MVC Razor在输入占位符中编码特殊字符
- asp.net – VS2012 Crystal Report Viewer组树隐藏
- asp.net – Fiddler:错误502代理错误
- .NET Standard项目构建失败,消息无用
- asp.net – 将HTML5占位符文本添加到文本框.net
- asp.net-mvc – 快捷键在Visual Studio 2012中不起作用
- asp.net – HttpContext.Current.User.Identity.Name始终是
- ASP.NET:将ViewState移动到页面底部