4

我工作的一個.NET v3.5的WinForms應用程序,並想利用一些支持:針對C#.NET v3.5應用程序的日誌/錯誤處理框架的最佳方法? (?企業庫/ log4net的/)

一)日誌(到文件&或許窗事件)

b)的錯誤處理/異常處理框架 - 以幫助識別信息可顯示用戶與代碼中進行處理,並記錄

C)紅利額外的將是如何通過捕獲/積累嚴重的錯誤給我一個服務器端的web服務(當它要求你向開發者反饋問題時類似於firefox) - 但是,如果這使得我的複雜性翻倍在問了降本要求

事情我知道的包括:

  • log4net的 - 似乎流行,但不知道這是否與我的要求B幫助)
  • 企業庫 - 我已經看着然而,似乎有點重(有點小題大做)

感謝

回答

1

+1對於log4net。關於(b),我傾向於定義我自己的自定義異常(全部來源於相同的基類,例如「BusinessException」),由BLL引發需要傳遞給用戶的錯誤(輸入違反業務規則,用戶授權失敗,...)。如果將BLL部署爲Web服務,則這些異常將與SOAP客戶端(SOAP 1.1)/發件人(SOAP 1.2)錯誤代碼一起包裝在SOAP錯誤中。

然後在UI層中,任何帶有FaultCode.IsSenderFault = true的BusinessException或FaultException指示應向最終用戶顯示錯誤消息。記錄任何其他異常,並向最終用戶顯示一條通用消息(「發生了某些不良事件」)。

就我個人而言,我認爲區分要顯示給用戶的消息只能通過應用程序特定的方式明智地完成,例如上述。

關於(c)您可以編寫一個自定義的log4net appender,向您的web服務發送嚴重錯誤(可能通過MSMQ異步執行)。

編輯

在迴應的意見,我不知道任何第三方框架,做到這一點的;我們通過一個非常輕量級的內部框架來實現它(它也有其他基本的東西,比如圍繞log4net的精簡提供程序模型API,這樣我們的內部代碼就不會明確依賴於log4net,我們將能夠切換到不同的如果出現更好的日誌框架,或者我們的應用程序部署到管理員更喜歡不同的站點的日誌框架)。

+0

謝謝 - 您對我的Q2的回答正是我感興趣的事情類型。是不是現有的非常輕量級的框架可以解決您所知道的問題? (而不是自己滾動) – Greg 2010-01-28 08:42:12

2

我用兩個,但最後還是贊成的log4net的下降EntLib,因爲它是恕我直言,EA ser使用,配置和更輕量級。
無論如何,兩個庫都可以,對於給定的項目來說,這更符合個人理由。

+0

做了log4net幫助您區分可能希望用戶看到的文本與您希望在日誌文件中可能會返回的文本之間的區別開發者?感謝 – Greg 2010-01-28 07:12:21

+0

看看它的文檔,http://logging.apache.org/log4net/release/manual/configuration.html 基本上,你可以用不同的appender和過濾日誌來實現你想要的,正如官方文檔中所解釋的那樣。 – 2010-01-28 07:49:16

1

Log4net是我的最愛。高度可定製,易於使用。

至於一個聚合日誌事件報告的Web服務,我遇到了同樣的問題,最終我自己創建了一個服務:bugcollect.com。你可以從網站上下載一個附加的log4net,看看你自己。該服務會報告分析並將類似報告彙總到存儲桶中。您可以在提交新報告,新存儲桶或新來源時設置電子郵件通知。您還可以設置對存儲桶的響應,並在遇到類似事件時將此響應返回給應用程序,例如指示用戶下載更新的版本。該服務具有提交報告的RESTful界面,但對於.Net,Java,log4net和log4j,有free client libraries可供下載。您可以嘗試使用功能有限的免費帳戶,也可以輸入促銷代碼BETA進行完整功能試用。

2

當然,我有偏見。但請幫我一個忙,看看我的logging framework。比其他一些框架更容易使用。它還附帶了一個示例Windows應用程序,可實時顯示日誌。還有一個用於查看日誌的Visual Studio插件。將日誌發送到Web服務或其他任何你想要的東西也很容易。 (例如,我有一些用於登錄Twitter的示例代碼。)

+0

是否爲我的b)部分提供了特定的支持? – Greg 2010-01-28 19:43:43

+0

@Greg我認爲b部分是非常特定於應用程序的東西。我的框架沒有解決這個問題。您需要確定如何處理每個異常,以及是否顯示用戶有關它的信息。 – TheObjectGuy 2010-01-28 22:12:43

+0

感謝您的回覆 – Greg 2010-01-28 23:20:55

相關問題