2015-02-23 88 views
12

我必須編寫一個集中式日誌記錄框架。如果應用程序使用NLog,爲什麼會使用ELMAH

基本要求是:如果需要SQL Server數據庫

  • 記錄異常,以及其他細節。
  • 如果DB是向下,即故障切換選項是記錄到文件和電子郵件

我已經做了一些閱讀和周圍看起來NLOG是最好的選擇是簡單,大部分功能,我需要。 我的計劃是圍繞NLog編寫一個包裝類庫,並在我的所有asp.net應用程序,web api以及其他庫項目和一些使用COM +的經典asp站點中使用我的庫。

但我注意到有人提到使用ELMAH進行異常處理和NLog進行診斷。

我的問題(或者我應該說混淆):如果我使用NLog,爲什麼要使用ELMAH?

或者當人們在NLog旁邊使用ELMAH?

或者

注意我不是試圖比較功能按功能,但要明白:什麼是當一個人會選擇一個比其他方案?除了ELMAH用於Web應用程序。

回答

12

Elmah用於處理未捕獲的異常,通常是「最後一道防線」,能夠識別什麼時候事情完全消失。您可以閱讀它在其github頁面上提供的內容:http://code.google.com/p/elmah/

NLog和其他人(我強烈推薦Serilog)用於運行時診斷和跟蹤...也就是說,要轉儲您要跟蹤的信息或日誌記錄根據定義,這不是未捕獲的例外)。 Nlog和log4net一樣,nlog變得相當冗長,而最近發佈的版本......前一年發佈的版本,我覺得大多數「舊門衛」日誌框架並沒有真正的與時俱進。

Serilog是一個更好的選擇,因爲它提供了「結構化日誌記錄」,允許您例如在日誌文件中的特定字段上進行搜索。

+0

但是,如果在global.asax中的application_error中,我使用NLog記錄錯誤。它會被認爲等同於「處理未捕獲的異常」 – gbs 2015-02-23 05:08:51

+1

@gbs - 不,因爲Elmah在IIS HTTP處理程序級別處理事務,這是處於鏈條的更上游。此外,它還爲事件提供了一個很好的基於Web的查看器,nlog不提供。 – 2015-02-23 05:55:34

+0

好的...但我認爲它仍然會處理這些模塊中的錯誤事件。我將不得不看代碼本身。你說得對,基於網絡的瀏覽器絕對不是NLog提供的。 – gbs 2015-02-23 17:16:54

-1

埃裏克打了它的頭,爲什麼有人會使用兩個。但是,ReflectInsight是結構化日誌記錄和異常捕獲的更好選擇。 https://insightextensions.codeplex.com

+1

ReflectInsight是商業用途。與nlog,serilog或其他... – 2015-02-23 05:57:44

+0

Commercial沒有什麼可比性,但是以如此低的價格,只需一天的工作就可以得到回報,從而減輕當前所有其他開源解決方案的所有限制,恕我直言。 – code5 2015-02-23 08:01:33

+1

這使得你是一個開發人員的假設。假設你是一家擁有500名開發人員的公司,其中任何一個人都可以在應用程序上工作......現在你必須購買500個許可證,否則你不知道誰是和未被許可的。對於這種類型的圖書館來說,這是一種陰險,你唯一的開發者根本不明白......而且,僅僅因爲你是一家大公司,並不意味着你只能爲了這樣一個目的而在圖書館拋出15萬美元。 – 2015-02-23 15:59:14

相關問題