Dot-Net

.net 診斷最佳實踐?

  • February 13, 2021

我們最初沒有使用任何日誌記錄或調試跟踪,但在花了幾個星期來跟踪一些數據損壞後,我們決定將所需的 Debug.Write 和 Trace 用於生產和 Debug.Assert

所以現在的問題是使用調試和跟踪日誌的最佳實踐是什麼。我只是在尋找一些通用的東西。

public void AddRectodatabase(object record)
{
  Debug.WriteLine(record.ToString());
  Trace.WriteLine(record.ToString());

  // Add it to databse

  Debug.Assert(true, "Use this on case by case basis");
}

這對於通用目的是否足夠好,我在那裡做錯了什麼?

我們希望堅持使用 .net System.Diagnostics,而不是 log4net 等其他替代方案。

System.Diagnostics 中還有其他有用的東西嗎?

您應該計劃在整個應用程序中引發 ETW 跟踪事件 - 不僅要提醒偵聽器注意問題,還要提供對應用程序和組件性能的行為甚至性能的可見性。

ETW 是一種(非常)高性能和(令人驚訝的)低影響的引發事件的方式,可以收集和分析——即使在生產環境中也是如此。它是整個 Windows、SQL 等中使用的日誌記錄和跟踪基礎設施。

三個有用的連結:

  1. 診斷:在 .NET 3.5 中使用 ETW 跟踪 (EventProviderTraceListener)
  2. 控制 .NET Framework 日誌記錄連結文本
  3. 兩分鐘練習:XPerf 簡介

按順序閱讀所有 3 個,然後重新閱讀 - 以後的資訊將非常有用,但除非您先掌握基礎知識,否則將更難理解;)忽略使用 logman 啟動和停止跟踪收集的說明;請改用 XPerf。

如果您還沒有看過Perf 工具包和 XPerf 查看器,那麼您一定要大飽眼福了!:D

強烈建議您考慮在所有應用程序最重要功能的開始和結束時引發啟動和停止事件,以便您可以將這些事件與其他遙測數據重疊,以便您可以看到,例如,您的應用程序功能的影響在磁碟、網路、記憶體、CPU 等

希望這可以幫助。

引用自:https://stackoverflow.com/questions/2795310