2010-12-20 85 views
3

我的應用程序需要記錄有關用戶操作(插入,更新,刪除等)和異常的信息,我想在Oracle10上存儲日誌,所以我搜索一些日誌框架使用。 我讀到一點點:ASP.NET應用程序的日誌框架

1 -Log4Net

2 - 記錄應用程序塊

3 - ELMAH

不知您對這些日誌工具的看法? 什麼是一個好的框架(或實現方式)登錄我的應用程序?

*與項目經理,記錄應用程序塊 的討論後,將成爲我們的選擇,但是,讓這個評論=)

+0

請參閱answeres http://stackoverflow.com/questions/710863/log4net-vs-nlog?answertab=votes#tab-top – 2012-02-21 21:08:20

回答

3

log4net和Logging Application Block都是有效的選擇。我認爲ELMAH主要集中在錯誤日誌記錄,所以這可能不是(唯一的)你想要的。

在工作中,我在幾個項目上使用log4net。它是穩定的,高性能的和可擴展的,我們從來沒有任何問題。

我可能會使用log4net進行日誌記錄,並且還會使用ELMAH記錄異常。它可以手動記錄未處理的異常,並且可以通過一次調用ELMAH來記錄您在應用程序中捕獲和處理的任何異常。這可能看起來像雙重日誌記錄(它是:-))。但是當您的應用程序出現意外失敗時,擁有ELMAH日誌非常有價值。

我聽說過關於NLog project的好東西,但還沒有使用它自己。 log4net似乎更復雜一點,但它具有額外的好處,可以自動添加上下文信息來記錄消息(有點像ELMAH)。

+0

OP沒有理由不能使用ELMAH來記錄錯誤,比如log4net記錄與錯誤無關的信息。 – 2010-12-20 17:54:39

+0

@斯科特,當然不是,那實際上也是我自己做的事情。補充說,以避免混淆。 – driis 2010-12-20 17:56:23

1

我對不同的框架意見:

  1. log4net的 - 愛它。這是我經常使用的日誌記錄系統。一切都很容易開始。它也非常靈活,可以讓你記錄任何事情。

  2. 日誌記錄應用程序塊 - 也是一個不錯的選擇。我仍然更喜歡Log4Net(但其原因大多是個人的)。

  3. Elman - 非常適合放入ASP.NET應用程序以記錄異常。對於一般的消息日誌記錄,我仍然會使用Log4Net。

而且我根據我的意見,我會建議你做猜測...

如果沒有,使用log4net的創造,你可以在你的應用程序中使用的適配器,使記錄簡單。

+0

謝謝賈斯汀。我也喜歡log4Net,應用程序塊也不錯。 – Ewerton 2010-12-20 18:08:33

0

我個人喜歡BitFactory.Logging,因爲它很輕量級,並使用適當的抽象數來使調用代碼易於測試。

也就是說,你想記錄的東西(插入,更新,刪除)可以只使用觸發器進行記錄,這個解決方案可能取決於你的設置執行得更好。

0

我個人總是創建一個包裝器,所以我有自己的ILog實現,可以與您選擇的任何一個配合使用。這使得交換或我們的實現變得很容易。

我試過#2,但它有點痛苦; #1對我們來說算得很好,但是我們沒有爲此付出,只是簡單地進行了自定義日誌記錄。我所知道的關於#3的是,我知道有人在他們的組織中執行它時遇到了麻煩。不知道爲什麼,但它實際上看起來很有趣。我認爲你不能親自出錯。它部分取決於你喜歡的API。

HTH。

0

Log4net很安靜,它基本上是log4j的一個版本。 Elmah也很好,特別是如果你發現(像我一樣)無法寫入生產環境中的文件,因爲它會寫入數據庫。另外,Elmah更適合異常日誌記錄,並且很酷,因爲它允許您根據事件進行日誌記錄。在我的項目中,我正常部署log4net和Elmah

0

如果您正在審覈數據庫中的數據更改,那麼您可以在相關表上使用觸發器。

對於登錄dotNet應用程序使用TraceSource寫入日誌信息和自定義TraceListener寫入數據庫。真的不需要超出基類庫的框架。

+0

感謝克里斯汀,但我們需要記錄一些商業行爲,例如「價格os產品設置爲10%折扣」。 – Ewerton 2010-12-20 18:07:09