2011-06-29 62 views
0

我們目前正在設計一個組織範圍的日誌記錄機制(基於C#)。其中一個要求是將日誌記錄寫入臨時存儲,然後將其移至中央數據庫以節省性能。使用事件日誌作爲臨時日誌存儲

我們目前正在評估臨時存儲的兩個選項 - 一個是內存數據庫,如SQL CE,另一個是Windows的事件日誌。 我們不確定事件日誌是否適合此任務。我們需要一些能夠承受沉重負載的東西(每秒約50次呼叫),易於閱讀和可靠。

您對此有何看法?事件日誌是否符合這些要求?如何執行? 任何有識之士將不勝感激。

謝謝!

+0

關於可靠性:根據客戶端設置,事件日誌的大小限制了保存的條目數量。由於您不是唯一寫入事件日誌的日誌,因此日誌可能會溢出,並且您會丟失條目。你有沒有想過ETW(http://msdn.microsoft.com/en-us/magazine/cc163437.aspx)? – Dominik

回答

0

首先,這是一個解決但不一定是最好的解決,因爲它真的取決於你的需求。我們有一個用作循環日誌的固定大小的文件文本文件。我們有固定長度的日誌消息的好處,所以這對我們很有用。一天一次,在較安靜的時間,服務器將提取尚未讀取的日誌條目。它可以每秒處理幾百個條目,而不會冒出汗來。如果服務器沒有及時提取足夠的數據,那麼較舊的條目會被較新的數據覆蓋,但是文件的大小不太可能會發生,因爲我們還可以預先知道大致的數據每天的最大條目數量將是。

但正如我所說,這取決於您的需求在很大程度上取決於哪種解決方案最好。我沒有使用C#事件日誌,但是如果它們與舊的Windows NT事件記錄器類似,則它具有可以在外部讀取而無需客戶端程序執行任何操作的好處。

0

我會建議你使用MongoDB。因此,也許你可以使用相同的中央存儲,爲本地和中央獲得相同的基礎設施。

0

將本地日誌條目傳輸到中央數據庫可能是一項艱鉅的工作。您必須處理所有可能的異常,中斷等。因此,我建議您考慮使用帶有Microsoft Sync Framework的SQL Server Compact 4.0解決方案。

我認爲可以實現一種面向服務的單向同步解決方案。

另外,SQL Server Compact 4.0的數據庫大小限制爲4GB,並且處理> 250個併發連接。您還可以選擇將x86和x64引導程序包與您的一次性應用程序一起使用。