日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Exceptionless - .Net Core开源日志框架

發布時間:2023/12/4 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Exceptionless - .Net Core开源日志框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:markjiang7m2
原文地址:https://www.cnblogs.com/markjiang7m2/p/11020140.html
官網地址:http://letyouknow.net

今天要給大家介紹的Exceptionless是一個基于 .net core的開源日志框架,Exceptionless的意思是:沒有異常。Exceptionless可以為ASP.NET, Web API, WebForms, WPF, 控制臺和MVC應用程序提供實時錯誤,功能和日志報告。它將收集的信息組織成簡單的可操作數據,這將有助于您的應用程序變得無異常。最重要的是,它是開源的

  • Exceptionless官網:https://exceptionless.com/

  • 說明文檔:https://github.com/exceptionless/Exceptionless/wiki/

  • Github:https://github.com/exceptionless/Exceptionless/

快速入門

Exceptionless支持直接調用官網服務記錄日志,這樣可以非常快速地在我們的應用中使用Exceptionless,下面我們來看看具體的步驟。

1. 創建免費賬號

在https://be.exceptionless.io/signup中創建一個免費賬號,只需要提供用戶名、密碼以及郵箱即可,非常簡單。

2. 登錄并創建項目

3. 獲得屬于這個項目的API密鑰

4. 配置應用

在我們的應用中安裝Exceptionless,在Nuget中直接搜索 Exceptionless.AspNetCore進行安裝,或者在VS內置Powershell中執行下面命令

Install-Package Exceptionless.AspNetCore


Startup.csConfigure方法中添加Exceptionless的使用 這里就用到前面的API密鑰,當然可以將這個密鑰添加到 appsettings.json文件中,這樣用起來更靈活

  • 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顯示異常記錄的統計信息

    點擊某一條具體的異常記錄,可以查看具體的異常信息

    這就是使用官網提供服務的流程。使用非常的簡單,但在使用上也會存在一定的問題。

    • 實測發現,應用拋出異常后并不能立刻在Exceptionless網站中看到異常記錄,需要等待一定的時間

    • 天下沒有免費的午餐,如果需要商用還是要交錢升級服務,價目表如下。我測試使用的是免費版,只能創建一個項目,每個月只能提交3000條記錄,而且這些記錄只能保存3天,這對于商用肯定是不足夠的。

    本地部署Exceptionless

    Exceptionless是開源的,所以它也支持我們進行本地化部署,官方文檔說明在這里https://github.com/exceptionless/Exceptionless/wiki/Self-Hosting

    前期準備

    • .NET 4.6.1

    • Java JDK 1.8+

    • 設置JAVA_HOME環境變量

    • IIS Express 8+

    • Powersell 3+

    • 更改Powershell腳本執行策略為Unrestricted(以管理員身份運行CMD,執行命令行?powershellSet-ExecutionPolicyUnrestricted

    因為Exceptionless是使用ElasticSearch進行實時搜索,而ElasticSearch是Java實現的,所以需要安裝Java JDK

    1. 下載Exceptionless最新版Release

    https://github.com/exceptionless/Exceptionless/releases

    2. 快速啟動Exceptionless

    解壓Exceptionless壓縮包,直接雙擊 Start.bat批處理文件,它就會自動幫我們安裝運行 ElasticSearchKibana并啟動一個IIS Express運行Exceptionless Web項目

    我這里為了能看到批處理文件的輸出信息,在bat文件中最后添加了一行 @pause,就是讓它執行完之后不自動關閉窗口

    文件夾 wwwroot就是Exceptionless Web項目所包含的部署文件

    不過,很不幸,我并沒有馬上成功。。CMD輸出以下錯誤信息

  • Invoke-WebRequest : 請求被中止: 未能創建 SSL/TLS 安全通道。

  • 一頓搜索得到的結論就是要在請求命令前面多加一行下面的命令

  • [System.Net.ServicePointManager]::SecurityProtocol=[System.Net.SecurityProtocolType]::Tls12

  • 根源和解決辦法是在這里找到的
    https://blog.miniasp.com/post/2019/01/12/PowerShell-Invoke-WebRequest-use-TLS-v12

    大概意思就是我的電腦同時安裝了.NET 4.0 和.NET 4.5或更高版本,這導致加密協議的默認值為 SSLv3TLSv1,而Powershell需要使用 Tls12才能正常使用 Invoke-WebRequest

    于是,我打開 Start-ElasticSearch.ps1文件,分別在兩處 Invoke-WebRequest命令前添加了上面的命令,注意是兩處

    (當然,這里也可以用另外一個方法繞過這個問題,就是看看Powershell腳本中要下載的是什么文件,自己單獨先把文件下載好放在它指定的位置就可以了,我就是這么干的。。不過我是因為Powershell這個下載太慢了)

    OK,重新執行 Start.bat,可以正常下載,也啟動了ElasticSearch和Kibana

    看起來像是正常啟動了,然后,瀏覽器中打開 http://localhost:50000/卻得到了這個

    這又是為何呀?看了一下 Start-Website.ps1文件,好像也沒什么特別的,所以我第一反應是 50000端口可能被占用了

    結果一查,還真的是,我的有道詞典。。

    好吧,我換 50001總該行了吧。當然這里也要注意下,更換端口有3個地方需要改的,要是沒改好,即使網站運行起來了也沒辦法進行注冊等操作

    首先是 Start-Website.ps1文件中最后兩行

  • Start-Website $wwwroot 50001

  • Start-Process "http://localhost:50001"

  • 然后是 wwwroot文件夾中的 Web.config

  • <add key="BaseURL" value="http://localhost:50001/#" />

  • 還有很容易被忽略的 app.config.77fc9ddd679d37dc.js

  • angular.module('app.config', [])

  • .constant('BASE_URL', 'http://localhost:50001')

  • 再一次執行 Start.bat,滿心歡喜地在瀏覽器打開 http://localhost:50001/。額,然而還是失敗,查看50001端口,發現并沒有任何程序占用,那也以為著Exceptionless Web沒有正常啟動。

    因為ElasticSearch和Kibana都正常啟動,而且請求也正常,意味著 Start-ElasticSearch.ps1這個腳本的執行過程是正常的,那就把焦點專注在 Start-Website.ps1上面了。

    這文件上面核心的就是一句

  • cmd /c start cmd /k "$iisExpressExe" "/port:$port" "/path:$path"

  • 根據我的環境,它最終運行的腳本應該是這樣的

  • cmd /c start cmd /k "C:\Program Files\IIS Express\iisexpress.exe" "/port:50001" "/path:D:\Program Files\Exceptionless.4.1.2861\wwwroot"

  • 好吧,這個時候我才留意到有這么一個窗口(回家換了個電腦繼續。。大家自動忽略截圖的不一致)

  • 'C:\Program' 不是內部或外部命令,也不是可運行的程序

  • 或批處理文件。


  • 那我大概猜到是什么問題了,這里應該是路徑 C:\ProgramFiles\IISExpress\iisexpress.exe中含有空格導致的。
    既然它是執行批處理命令,那我直接在CMD下面執行下面這個命令應該是沒有問題的

  • "C:\Program Files\IIS Express\iisexpress.exe" "/port:50001" "/path:D:\Program Files\Exceptionless.4.1.2861\wwwroot"

  • Bingo,就是它了

    那如果非得要在Powershell來執行,有沒有辦法呢?其實,也是有的,但因為我對Powershell不太熟悉,所以只找了一種,但是感覺這不是最優解

    把前面的命令行改為下面這個

  • cmd /c start cmd /k "C:\Progra~1\IISExp~1\iisexpress.exe" "/port:50001" "/path:D:\Program Files\Exceptionless.4.1.2861\wwwroot"

  • 這里就是把 ProgramFiles改為 Progra~1IISExpress改為 IISExp~1,基本語法是,去除空格后取得前面的六個字母, ~表示省略后面的字符,然后 1是表示第一個匹配的文件夾

    這是我在Windows系統下部署Exceptionless過程中遇到的問題,但因為在官網上的介紹是直接雙擊運行 Start.bat就完成部署的,不知道其他朋友有沒有遇到跟我一樣的問題。

    我這里就沒有繼續糾結怎么修改 Start-Website.ps1文件里面的腳本了哈,各位有感興趣的朋友可以研究后在留言區分享一下。

    當然了,前面這么麻煩只是為了找出問題的原因,但如果回到本質,這個腳本就是為了用IIS Express部署Exceptionless Web站點,那其實我們更普遍的是直接用IIS管理器新建一個站點就可以了。

    重新整理這個啟動流程,就是下載并啟動ElasticSearch和Kibana服務,然后部署Exceptionless Web站點。

    所以,我們可以按照下面這個步驟:

    • 執行?Start-ElasticSearch.ps1啟動ElasticSearch和Kibana服務

    • IIS管理器部署Exceptionless Web站點,設置端口50001

    3. Exceptionless注冊用戶

    這里跟前面使用官網服務時是一樣的,注冊用戶,新建項目,獲得Api密鑰

    4. 應用集成本地Exceptionless

    在應用中使用本地服務跟官網服務也基本相同,只是需要將默認的Exceptionless服務地址改為本地的

    Startup.cs中的 Configure方法

  • ExceptionlessClient.Default.Configuration.ApiKey = Configuration.GetSection("Exceptionless:ApiKey").Value;

  • ExceptionlessClient.Default.Configuration.ServerUrl = Configuration.GetSection("Exceptionless:ServerUrl").Value;

  • app.UseExceptionless();

  • 這里我就將兩個配置項放到了 appsettings.json文件里

  • "Exceptionless": {

  • "ApiKey": "4pyCA8KFr3YekuVStkIbaE7Hqq1YIZAR6vH8OrYh",

  • "ServerUrl": "http://localhost:50001"

  • }

  • 運行之后就可以看到Exceptionless上有異常的記錄

    而且,我們也可以看到異常記錄數量是沒有限制的

    總結

    本文主要是介紹了如何快速應用Exceptionless記錄異常,以及如何進行本地化部署,然后就是在我自己進行試驗的過程中踩到的坑,當然了Exceptionless還有很多功能,以及本地化時的一些設置在本文中都是沒有涉及到的,目前我介紹的也就是一個能用的階段,哈哈,后面我有深入的時候再給大家總結。今天就先跟大家介紹到這里,希望大家能持續關注我們。

    參考文獻
    本文在編寫過程中引用或參考了以下文章中的部分內容,如有侵權,請聯系修改或刪除。
    https://www.cnblogs.com/edisonchou/p/exceptionlessdeploymentonproductionenv_introduction.html
    https://blog.miniasp.com/post/2019/01/12/PowerShell-Invoke-WebRequest-use-TLS-v12


    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Exceptionless - .Net Core开源日志框架的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。