我需要在運行時從System.Net.Sockets
設置跟蹤輸出,而不使用app.config
文件方法。System.Net.Sockets跟蹤沒有app.config
設置與System.Diagnostics
的東西app.config
的一部分運作良好,但由於我需要有時偶爾在該領域,我寧願配置它在運行時。
我需要在運行時從System.Net.Sockets
設置跟蹤輸出,而不使用app.config
文件方法。System.Net.Sockets跟蹤沒有app.config
設置與System.Diagnostics
的東西app.config
的一部分運作良好,但由於我需要有時偶爾在該領域,我寧願配置它在運行時。
我不得不在幾年前的一個大型應用程序上做類似的事情(動態啓用跟蹤)。可以用代碼完成所有工作。基本思想是在啓用跟蹤的情況下進行編譯(即設置TRACE條件),並將默認跟蹤偵聽器初始設置爲空輸出設備。所有的跟蹤信息將轉到位桶。
當您要啓用跟蹤時,您需要初始化並安裝一個TraceListener,它將跟蹤信息輸出到您想要的位置。
Tracing and Instrumenting Applications的文檔顯示瞭如何在代碼中啓用和配置跟蹤,而不依賴於配置文件。
How To: Configure Network Tracing解釋了爲啓用網絡跟蹤您需要進行的配置文件設置。你必須重新編寫代碼來完成它。特別是,您需要創建對應於示例配置文件中定義的源和開關的TraceSource和TraceSwitch實例。
這當然是可行的,雖然它需要一點點圍繞所有不同的運動部件。
這是我指出的方向。 「...需要創建與該示例配置文件中定義的源和交換機相對應的TraceSource和TraceSwitch實例。」這是我失明的地方。有,例如, 'private static bool System.Net.Logging.s_LoggingEnabled',我想切換。現階段我無法理解的是如何做到這一點。我會跟進你的指針。我已經成功地使用了開關和信號源。我只是無法從System.Net.Sockets'找到'跟蹤數據,除非使用app.config進行設置。謝謝 –
你可以使用像wireshark這樣的第三方工具嗎? – AlexH
我可以在現場..但我真正想做的是能夠讓客戶生成一個診斷輸出,可以發回給我。因此需要在運行時打開..謝謝 –
用戶可以更改app.config,然後重新運行應用程序。 –