TextWriterTraceListener 將診斷資訊寫入 MyListener.log。initializeData 指定檔案名稱。極少數情況需自訂接聽類別。
為每個組件建立診斷類別,集中管理追蹤開關與輸出方法:
internal class MyAssemblyDiagnostics
{
static private TraceSwitch myAssemblySwitch = new TraceSwitch("MyAssembly", "The switch for this assembly");
internal static void Msg(TraceLevel l, object o) { ... }
internal static void Msg(TraceLevel l, string s) { ... }
}
呼叫端只需 MyAssemblyDiagnostics.Msg(TraceLevel.Info, "Entering Method1.");。
internal static void Msg(TraceLevel l, object o)
{
Trace.WriteLineIf(librarySwitch.Level >= l || globalSwitch.Level >= l, o, "MyLibrary");
}
應用層級設為 Error 可快速發現錯誤;特定組件提升至 Verbose 可精準定位問題。
實際部署環境中,診斷庫不可或缺。.NET FCL 已提供核心功能,應盡量使用並按需擴充,確保正式環境也能捕獲問題。