2. Exceptionless Client
Exceptionless Client 是負責收集本地端事件並向 Log Server 推送,目前提供下面幾種平台的安裝插件:
- .NET
- Console and Service applications
- ASP.NET Core
- ASP.NET MVC
- ASP.NET Web API
- ASP.NET Web Forms
- Windows Presentation Foundation(WPF)
- Nancy
- JavaScript
- Browser application
- Node.js
產生 API Key
開啟 Web 介面並登入(需先向本地端 Server 註冊),點選主選單中
Admin --> Projects --> Add New Project
建立專案後點選
Manage Project --> API Keys
複製 API key
安裝 Client plug-in
開啟 Visual Studio,在 NuGet 套件管理員視窗中搜尋 "Exceptionless" 關鍵字,選取對應平台的套件並下載安裝
Exceptionless Client for .NET MVC
下載安裝 Exceptionless.Mvc 套件至專案
修改 Web.config,找到以下區段並置換 apiKey 及 serverUrl 參數
<exceptionless apiKey="API_KEY" serverUrl="BASE_URL" />
前項設定完成後 Exceptionless 即會 log 所有 unhandled exception
透過 Exceptionless API 方法手動傳送 log,一些簡單範例:
try { throw new ApplicationException(Guid.NewGuid().ToString()); } catch (Exception ex) { ex.ToExceptionless().Submit(); }
try { throw new ApplicationException("some error occured"); } catch (Exception ex) { ex.ToExceptionless() // 為事件設定關聯 ID .SetReferenceId(Guid.NewGuid().ToString("N")) // 加入物件資訊並排除特定欄位 .AddObject(order, "Order", excludedPropertyNames: new [] { "CreditCardNumber" }, maxDepth: 2) // 加入自訂屬性 .SetProperty("Quote", 123) // 加入標籤 .AddTags("Order") // 標記為Critical錯誤 .MarkAsCritical() // 設定位置座標 .SetGeo(43.595089, -88.444602) // 設定 User Identity .SetUserIdentity(user.Id, user.FullName) // 設定 User 相關資訊 .SetUserDescription(user.EmailAddress, "I tried creating an order from my saved quote.") // 發送事件 .Submit(); }
除了傳送 exception,我們也可以傳送不同類型的事件給 Exceptionless
using Exceptionless; // 發送 log ExceptionlessClient.Default.SubmitLog("test log"); // 發送 log 並指定嚴重性層級及 tag ExceptionlessClient.Default.SubmitLog(typeof(TestController).FullName, "test log", "Info"); ExceptionlessClient.Default.CreateLog(typeof(TestController).FullName, "test log with tags", "Warn").AddTags("MyTag").Submit(); // 紀錄 Feature Usages ExceptionlessClient.Default.SubmitFeatureUsage("MyFeature"); ExceptionlessClient.Default.CreateFeatureUsage("MyFeature").AddTags("MyTag").Submit(); // 紀錄 Broken link error ExceptionlessClient.Default.SubmitNotFound("/missedpage"); ExceptionlessClient.Default.CreateNotFound("/missedpage").AddTags("MyTag").Submit(); // 紀錄自訂 Event ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Low Fuel", Type = "racecar", Source = "Fuel System" });
Exceptionless Client for .NET Web API
下載安裝 Exceptionless.WebApi 套件至專案
設定與使用方法與 MVC 的 Client 都相同,唯一的差別是必須在專案啟動階段呼叫以下方法設定註冊事件
ExceptionlessClient.Default.RegisterWebApi(HttpConfiguration config)
Exceptionless Client for NLog
下載安裝 NLog 及 Exceptionless.NLog 套件至專案
在專案下建立 NLog.config 設定檔並增加一個 Exceptionless target,當 NLog 紀錄事件訊息時,會自動傳送一份副本到 Exceptionless上。以下是設定參考範例:
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <extensions> <add assembly="Exceptionless.NLog" /> </extensions> <targets async="true"> <target name="exceptionless" xsi:type="Exceptionless" apiKey="API_KEY" serverUrl="BASE_URL"> <field name="host" layout="${machinename}" /> <field name="identity" layout="${identity}" /> <field name="windows-identity" layout="${windows-identity:userName=True:domain=False}" /> <field name="process" layout="${processname}" /> </target> </targets> <rules> <logger name="*" minlevel="Info" writeTo="exceptionless" /> </rules> </nlog>