你需要記錄和跟蹤之間進行區分。雖然線條有些模糊,但我傾向於認爲日誌記錄是「非開發人員的東西」。像未處理的異常,損壞的文件等,這些絕對不正常,應該是一個非常罕見的問題。
跟蹤是開發人員感興趣的事情。堆棧跟蹤,方法參數,Web服務器返回HTTP狀態401.3等等。這些實際上很嘈雜,並且可以在很短的時間內產生大量數據時間。通常我們有不同程度的跟蹤,以減少噪音。
對於在客戶端應用程序日誌,我認爲事件日誌是要走的路(我不得不仔細檢查,但我認爲ASP.NET健康監測可以寫入到事件日誌以及)。普通用戶有權寫入事件日誌,只要您有安裝程序(由管理員安裝)創建事件源。
你的大部分優勢,爲SQL日誌記錄,而真正的,並不適用於事件日誌:
- 可以處理大量的數據: 你真的有大量未處理的異常或其他高級失敗?
- 處理異常的快速卷插入:單未處理的異常應該把你的應用程序下來 - 它本質上速率的限制。對非開發者的其他有趣事件應該進行類似的彙總。
- 非常定製:在事件日誌消息是相當多的自由文本。如果您需要更多信息,只需指向文本或結構化XML或二進制文件日誌
- 從SQL存儲生成報告/通知有點簡單:報告內置了事件日誌查看器,通知系統,或者是固有的 - 由於應用程序崩潰 - 或者與其他真正關鍵的通知混合在一起 - 沒有任何理由錯過事件日誌消息。對於公司或其他聯網應用程序,有一千個和1個不同的應用程序已經從事件日誌中剔除錯誤...可能是您的系統管理員已經在使用一個。
對於跟蹤,其中的異常或錯誤的具體細節的一部分,我喜歡平面文件 - 它們很容易維護,易到grep,並可以導入到SQL進行分析我是否喜歡。
90%的時間,你不需要他們,他們被設置爲警告或錯誤。但是,當您將它們設置爲INFO或DEBUG時,您將生成一個數據文件。 RDBMS有很多開銷 - 性能(ACID,併發等),存儲(事務日誌,SCSI RAID-5驅動器等)和管理(備份,服務器維護等) - 所有這些都是跟蹤日誌不必要。
10月26日還是沒有,差不多8個月後你的問題回答了我的。 – 2009-06-03 00:45:32