2011-04-28 97 views
0

我相信很多人都有過這樣的爭論:寫什麼或不寫應用程序日誌文件。我應該登錄還是不登錄?

我不是在談論我們確實記錄在catch子句中的小錯誤異常。

比方說,我們有一個standart應用程序連接到數據庫做一些選擇。

我們有一個Dao對象,其中的每個方法都包裝一個選擇查詢。

我想要你的建議。我應該在執行任何選擇之前登錄每個入口並退出?我應該記錄結果嗎?

如何記錄錯誤stacktrace?我發現它非常混亂並且超載了日誌文件。

任何人都可以推薦我關於這個主題的好文章(關於日誌記錄數據庫執行沒有必要,但一般)?

謝謝,

ray。

+0

我已經刪除了C#和Java標記,因爲你的問題主要是語言不可知的。 – razlebe 2011-04-28 08:16:11

+1

「記錄錯誤堆棧跟蹤怎麼辦?我發現它非常混亂並且超載了日誌文件」 - 這些不正是你想要識別和修復的東西嗎? – forsvarir 2011-04-28 08:17:01

+0

您可以創建多個日誌文件。我有超過20;)一個錯誤和一般執行,你可以有一個查詢和結果等 – 2011-04-28 08:17:52

回答

1

記錄意味着:事情發生時記筆記。所以你需要了解你作爲開發者的需求,以及你的客戶的需求。在這兩種情況下,試着找出你需要什麼來完成你的任務。作爲一名開發人員,您應該決定您對軟件的信心程度:如果它已經過完全測試和調試,那麼您根本無法記錄任何內容,只是嘗試跟蹤崩潰。另一方面,如果您正在進行調試,則可能需要更多細節。一般而言,當信心增加時,您應該有可能關閉註銷,並且可能通過配置設置在開始失敗時將其打開。當你需要決定記錄什麼時,問問自己:如果它崩潰了,這些信息會幫助我確定問題還是隻是噪音?

對於您的客戶,這取決於。例如,在一個共享系統上,最好知道誰做了什麼,所以我發生了記錄客戶所做行爲的事情。您應該與您的客戶達成一致。

+0

當程序員調試方法的每個入口和出口時,我看到了一種方法。你對此有何看法? – rayman 2011-04-28 10:00:34

+0

一切都取決於目的。這種技術有點「極端」:您正在對應用程序進行全面跟蹤,並可能產生巨大的數據量。但是,如果您的應用程序出現故障,並且無法找到重現它的方法,並且無法使用調試器,則這可能是您的最後手段。 – Palantir 2011-04-28 11:31:53

+1

它被稱爲檢測,並且可以非常有用地調試許多問題,其中簡單地通過代碼會改變時序並因此改變行爲(線程)或者將太麻煩或耗時。後者尤其是在框架代碼中會遇到的情況,這些代碼將非常頻繁地出現,但主要是與問題無關的情況。當每個退出時每個「輸入」和outdent的工具日誌縮進時,調用順序,線程爭用和複雜的不需要的遞歸問題變得更加明顯。 – 2011-04-29 08:38:40

0

這就是爲什麼你有不同的日誌級別。您在LOG_INFO上登錄的純粹信息量的東西以及您在LOG_DEBUG上記錄的調試內容。實際記錄的內容取決於用戶。