使用 Exceptionless 作為 Log Server 搭配 NLog 記錄系統訊息

Use NLog & Exceptionless as the Log Server.

前言


痾...久違的新文章,讓我的眼角流下了蛋蛋憂傷的淚珠....

今天來介紹一下一款 Open Source 的專案 「Exceptionless

Exceptionless 是什麼? 在 Exceptionless 的團隊對這個名稱的定義意義是無例外,當然...誰不想~不要有例外錯誤發生呢? (淚...),但是當發生例外時你要怎麼知道!? 就可以透過 Exceptionless 的服務來取得必要資訊啦(要錢的~)

當然,這個團隊也是很佛心的提供了 Open Source 讓你可以自己架設你的 Log Server 啦! 整個 Exceptionless 包含了 Server 與 Client 兩部分,Server 指的是一個 Web Api 的專案與 Dashboard 檢視,提供 Client 端將系統資訊寫入,Clinet 指的是客戶端透過所提供的 Lib 就能夠簡單的呼叫提供的方法寫入 Log 資訊。

目前有提供的客戶端支援有 ASP.NET, MVC, Web API, WPF, WinForms, and Console, JavaScript, Node.js,另外也支援了NLog擴充,為了我們的荷包著想,接來下我將介紹一下怎麼自行安裝 Exceptionless 給你的系統使用,本文章使用 Exceptionless v 3.0.0 為範例。

 

準備動作


首先,請先準備以下幾個項目

針對 Java 的部分,需要至環境變數設定 JAVA_HOME,指向你的 Java 安裝目錄,如下

針對 Elasticsearch,Exceptionless 使用 Elasticsearch 作為資料庫儲存你的 Log,

下載後解壓縮至 C:\Program Files\Elasticsearch\content\ 路徑底下,

另外需要使用 Exceptionless 配置好的設定檔,直接覆蓋掉在 C:\Program Files\Elasticsearch\content\elasticsearch-1.7.2\config 裡面的 elasticsearch.yml

接著,我們透過 Window Service 將 Elasticsearch 啟動 (參考),

開啟命令提示字元,切換到 C:\Program Files\Elasticsearch\content\elasticsearch-1.7.2\bin 目錄下

輸入: service.bat install elasticsearch-service-x64

看到以下畫面就成功了,再去服務裡面啟動。

另外,還要透過瀏覽器去檢查一下服務是否啟動,開啟瀏覽器輸入網址: http://localhost:9200

架設 Server 與 Dashboard


架設的部分,最簡單的方法可以使用 GitHub 上所提供的 Release 檔案進行架設,

解壓縮準備步驟中,所下載的兩個檔案 Exceptionless 與 Exceptionless.UI,

1.開啟 Exceptionless 解壓縮後的 wwwroot 目錄裡面的 web.confg 檔案,

修改裡面的內容:

RedisConnectionString: 支援 Redis,如果有的話就可以使用

ElasticSearchConnectionString: 剛剛所安裝的 ElasticSearch 的網址: http://localhost:9200

BASE_URL: 更改為 Exceptionless.UI Dashboard 網站的網址,例如: http://ui.localexceptionless.com/#

EnableSSL: 是否要使用 SSL,當然有 SSL 的話是建議啟用的

WebsiteMode: 如果為線上環境改使用 Production

Exceptionless:ServerUrl: 更改為 Exceptionless Api 網站的網址,例如: http://api.localexceptionless.com

剩下還有一些設定,例如 Mail 通知等等,可以視需求進行設定。

2.開啟 Exceptionless.UI 解壓縮後目錄裡面的 app.config.3869d2f297f52e30ccaa12dc361cdd01.js 檔案,

修改裡面的內容:

BASE_URL: 更改為 Exceptionless Api 網站的網址,例如: http://api.localexceptionless.com

USE_SSL: 是否要使用 SSL,當然有 SSL 的話是建議啟用的

在 IIS 中建立兩個站台,分別指到 Exceptionless 的 wwwroot 目錄與 Exceptionless.UI 的根目錄。

之後執行網站,就會看到以下兩張圖 (在這步驟因為我沒有IIS8...所以我使用 VS 2015 開啟專案檔執行 Api 專案)

建立 Exceptionless 專案


當網站架設完成後,你需要點選 Signup註冊一個帳號進入 Exceptionless,登入後畫面如下

在這個頁面你要建立一個 Project ,當 Project 建立完成後會產生一組 Api Key,這組 Api Key 將會在 Client 端使用到,如下圖

安裝 Client Exceptionless 套件 


到這個步驟就是要來使用我們所建置完成的 Log Server,

首先我建立了一個測試網站,由於一般開發我們都會使用 NLog 作為紀錄 Log 的第三方套件使用,而 Exceptionless 也擴展了 NLog,讓我們可以直接透過呼叫 NLog 的方法,將 Log 寫入到 Exceptionless 的 Target。

接下來透過 NuGet 安裝 NLog 與 Exceptionless.NLog,如下圖

再來,建立一個 NLog.config 檔案,內容為設定 Exceptionless 的 Target,如下


<?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="eIH5SgZcaluHIfMRzCg0OW5FUZQQMqmfUDsYSOG0" serverUrl="http://localhost:50000/">
      <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>

然後執行我的測試網站,就可以看到以下的結果:

結語


以上就是用 Exceptionless 建置 Log Server 的教學,Exceptionless 的 Dashboard 操作起來還蠻好使用的,也可以依據條件進行塞選,又整合了 NLog,使用上其實可以很簡易的加入專案,效能方面的話,Exceptionless 我測試過寫入 1 千多萬筆的 Log 資訊,透過 Dashboard 來查詢的時候速度都還OK,如果想的話,也可以自己介接他的 API,做自己的 Dashboard,更多的功能就要你自己去探索了喔!!

 

參考資料


exceptionless.com

github-exceptionless

 

 


以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)