簡體   English   中英

清理跟蹤

[英]Cleaning up tracing

我在C#中有一個大型應用程序(> 50k loc),使用NLog進行跟蹤,但是跟蹤有些失控了。 一些庫包含正確的跟蹤(正確的級別/詳細程度),其他的僅將所有內容發送到錯誤/信息級別。

我需要清理此錯誤,以使所有錯誤都反映出正確的嚴重性。 結果,當我真的想重新啟用常規異常跟蹤以跟蹤生產問題時,我們實質上禁用了生產跟蹤。

解決這個問題的最佳工作流程是什么? 是否有任何工具可以幫助您以干凈的方式跟蹤所有跟蹤語句? 我目前正計划使用re Sharper並查找所有用法,並花一些時間來解決這個問題。

更新:我在這里不清楚,我正在尋找一些一般的跟蹤指南,也許還提供了一些有關重新構建大型代碼庫的最佳方法的建議。

這就是我使用的(但是我使用的是log4net,但我猜它是一樣的)

.trace() -用於記錄諸如函數入口和出口以及巨大的數據轉儲之類的內容

for(a in l) { trace("List contents: "+ a) }

.debug() -在考慮分支時將打印完成的一(一)行信息。 您可能在一個函數中有多個調試語句,但沒有1條PR行。 當您閱讀調試語句時,它的讀法應該像是
功能。

.debug("Checking if current account {} for user {} has more than {} amount", amount);
.debug("Account criteria met for account {} for user {}; making withdrawel of {}", otheramount);
.debug("Account {} debited by {} amount. Transaction key {}");

每條調試線必須獨立存在,並包含理解它所需的所有信息。 僅閱讀“ Checking account level”(檢查帳戶級別)這一行是沒有好處的,因為您的下一個問題是哪個帳戶? 什么用戶 多少錢

.info() -最多1個或2個pr函數,並且僅在高級范圍內。 必須是完整的數據。

.info("Withdrawel procecss complete for account {}, user {}, for amount {}");

.warn() -非嚴重錯誤,數據完整,因此您可以將這些錯誤傳遞給郵件記錄器,並不時檢查該郵箱。

.error() -與警告相同,但更重要。 用戶被積極地阻止無法實現其目標,因此您想更頻繁地進行審核。

.fatal() -應盡可能直接進入sysadm的傳呼機,並提供有關服務器/計算機名稱的信息。

除此之外,確保每個類都有基於該類的自己的記錄器,因此即使在運行時,您也可以輕松地打開和關閉代碼特定區域的日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM