2010-08-07 90 views
4

所以,我前幾天正在和一個關於企業庫日誌應用程序塊和log4net的人談話。「可靠」記錄究竟是什麼?

東西我注意到的是log4net的主張: log4net is not reliable. It is a best-effort and fail-stop logging system.

出人意料的是,我試圖找出如果企業庫記錄是「可靠的」。這是我能找到的詞"reliable"明確使用的地方。 (注意它是從2004年版本開始的)

所以,這讓我好奇,什麼是「可靠」的日誌?如果有人知道企業庫日誌記錄應用程序塊是否可靠(在當前版本中),他們能否請我指出一些明確說明這一點的文檔?

謝謝。

+0

它可能取自log4j faq:http://logging.apache.org/log4j/1.2/faq.html#a1.2 – SiggyF 2010-08-07 15:27:45

回答

1

大多數日誌記錄庫(如log4net和Enterprise Library)都選擇吞服日誌記錄過程中可能引發的異常,以防止應用程序停止。正因爲如此,這些庫不能稱爲'可靠'(根據log4net文檔)。

在我看來,未能記錄一個事件是一個嚴重的失敗,不應該在地毯下掃蕩。缺少日誌消息可能會被黑客濫用以隱藏自己的蹤跡,或者至少會導致發現問題的根源更加困難。

對我來說,這是構建一個名爲CuttingEdge.Logging的日誌庫的原因之一。在無法記錄事件時,CuttingEdge.Logging中的日誌記錄提供程序將始終引發異常。通過爲特定的記錄器配置'fallback provider',用戶可以防止異常冒泡調用堆棧,並讓fallback提供程序記錄原始消息和由失敗記錄器拋出的異常。回退提供程序本身也可以配置回退提供程序。此機制使得使用CuttingEdge.Logging時不會記錄異常情況的可能性很小。

1

我認爲「可靠」意味着一旦發送了消息,就保證將消息發送或物理寫入終端設備。

0

從它的外觀來看,「可靠」意味着信息總是被記錄下來。 log4net顯然試圖做日誌記錄,但如果它不能,它會失敗並讓應用繼續前進。

+0

是的,這正是我的想法。這讓我很好奇什麼樣的日誌框架真的是「可靠的」。我的假設是,爲了使它真正可靠,它不能只是一個框架,它必須要大得多。 – Adam 2010-08-07 20:05:57