2010-04-26 20 views
3

假設您的應用程序有一個特殊的日誌表。您如何看待在特殊日誌表中保存堆棧跟蹤?

你覺得一個可能的堆棧跟蹤創建BLOB字段是什麼?

記錄做是爲了文件爲好,但也不是那麼方便閱讀的文本文件,而且數據庫是更爲「平易近人」。

+0

究竟將堆棧跟蹤記錄到數據庫的原因是什麼?登錄到文本文件時,您會得到什麼好處? – 2010-04-26 12:40:25

+0

一般來說,我會記錄有意義的消息,例如「我們在嘗試時發生異常」。但我正在考慮添加額外的字段,如果有的話會保存一個異常跟蹤。爲什麼?那麼,更容易閱讀它。快速。如果您需要詳細信息,可以深入研究完整的日誌文件。 – EugeneP 2010-04-26 12:48:43

+0

考慮到這種方法的侷限性(下面的答案總結),我個人不會投資這個功能。這似乎沒有足夠的投資回報率。 – 2010-04-26 16:25:01

回答

4

重複的日誌聽起來像......好吧,重複的日誌記錄。高架。如果您需要通過數據庫訪問日誌,我寧願使用/編寫一個工具,以便在需要時將日誌導入到單獨的數據庫。或者通過其他方式讓他們訪問。我知道的一個工具是Splunk,但它很昂貴,我相信也有其他人。

+0

我正要提出這個建議 – 2010-04-26 13:14:21

4

如果堆棧跟蹤是由於數據庫連接失敗?有些事情需要儘可能低層次和簡單。此外,我不明白爲什麼數據庫應該比文件共享或ssh帳戶更多或更少訪問。

+0

以及它只是一個重複的日誌,不是主要的。主要的log4j日誌文件也將保存。 – EugeneP 2010-04-26 12:01:25

+0

@MarceloCantos仍然是一個很好的觀察。 – 2010-04-26 12:38:44

1

我以前工作的一個應用程序,發生這種情況,但馬塞洛Cantos的建議,這是從來沒有真正可靠的,因爲某些例外不能有記錄,所以我們從來沒有使用過它,始終依靠日誌文件來代替。

如果使用日誌文件來調試錯誤,您還可以讓你選擇打印,按正確的順序信息的消息的任何其他調試;很少有您需要的是堆棧跟蹤,通常由堆棧跟蹤引發的情況同樣如果不是更有用。

1

爲什麼?或者至少,如果你打算這麼做,爲什麼Blob領域?

如果我要實現這樣的事情,我將會分離異常轉換成單獨的StackTraceElements和存儲那些到適當的表。隨着時間的推移和各種失敗,您可能會在應用程序中產生一些有關風險和質量性質的有趣統計數據。

+0

@Jim Rush導致一些數據庫引擎不能在每個字段中保存超過255個字符。 – EugeneP 2010-04-26 12:50:01

+1

@EugeneP正確,我沒有像尺寸項目那麼想,但沒有太多的能力來搜索數據。如果是我,我會允許通過包,類和方法進行搜索。結合代碼覆蓋率和測試工具的統計數據可能會產生一些有趣的分析。 – 2010-04-27 12:38:42

相關問題