2011-12-20 65 views
1

我正在爲ASP.NET MVC應用程序尋找一個集中的日誌解決方案(適用於Windows服務器)。集中日誌解決方案

我的應用程序是可擴展的,我希望我的日誌也可以擴展(所以日誌服務器不會是單點故障/瓶頸)。

我之前使用過LogFaces,但此解決方案不具有可伸縮性。它使用單個日誌服務器。

我使用log4net作爲記錄器,尋找可以寫入(或使用)appender來推送日誌的解決方案。

有什麼建議嗎?

謝謝! Roei

+0

也許Windows事件日誌?請記住,寫入日誌只是等式的一半。管理他們並報告他們的信息是另一半。如果您是開發人員編寫代碼以寫入日誌,那麼您需要諮詢管理員,他們需要在生產中進行管理。他也可能有一些見解/偏好(如事件日誌,數據庫或其他)。 – David 2011-12-20 15:49:37

回答

1

看爲ELMAH,偉大工程,可以爲每個應用程序運行,或者一個實例,以支付服務器

0

所有的應用程序我有一個通過WCF的淨利潤將消息發送到MSMQ消息隊列在遠程機器上的附加目的地。 tcp綁定。另一端有一個服務將這些消息記錄到數據庫中。

elmah可能是相當不錯的,如果你只是談論asp.net - 我的理解是,它只是插入到,並沒有解決像Windows服務等更一般的東西。不知道wcf應用程序,或者你甚至關心超出你的asp.net應用程序的任何東西。我猜想你的系統中可能還有更多,並且你想標準化。另外,因爲您關心的是規模,您可能會擔心必須直接從asp.net訪問數據庫進行日誌記錄。我的理解是這是elmah所做的。還沒有研究過它,但它可能會擴展到我建議使用msmq的方式。如果你真的關心規模,我認爲你想以這種或那種方式整合消息隊列,而wcf是一個很好的選擇。

+0

謝謝,我會看看它! – Roei 2011-12-21 09:45:04

1

Spread將符合該法案。這不是一個日誌記錄服務,但一些項目將其用於分佈式日誌記錄(例如Apache Web服務器的mod_log_spread模塊)。它有一個C#的客戶端available here

它的價值在於一個簡單的原則:產生日誌的應用程序不應該被記錄的行爲所約束或中斷。日誌記錄通常是應用程序的一個次要問題,並且日誌文件目標磁盤已滿(或日誌服務崩潰)是應用程序失敗的一個非常糟糕的原因。

要達到此分離級別,您必須構建您的應用程序,使其可以完全異步並獨立於日誌記錄「服務」進行日誌記錄。傳播使用一個很好理解和建立的技術實現這個:UDP /組播。

使用Spread進行記錄意味着您的應用程序將通過UDP登錄一個「fire and forget」模式。如果沒有設置Spread守護進程來使用這些組播消息,則日誌消息將永遠消失。但是,日誌生產者和消費者之間的解耦意味着您的應用程序永遠不需要擔心日誌填滿磁盤,也不必擔心花時間使用TCP查找和連接到中央日誌服務器。

傳播不是每個應用程序,但。您的環境可能不支持多點傳送(因此,對於初學者,EC2已停用),或者您的網絡管理員可能會阻止您的生產環境中的多點傳送數據包。

+0

感謝您的回覆!我在EC2上運行我的環境,正如你所說 - 這是一個問題是這種情況... – Roei 2011-12-21 09:36:06