2010-02-26 22 views
12

我用TextWriterTraceListener會System.Diagnostics程序)在我的應用程序追查幾件事情像例外,...TextWriterTraceListener會和跟蹤文件名用的GUID

的應用程序在終端服務器上運行,如果有許多用戶同時使用它的偵聽器開始創建許多跟蹤文件,文件名中包含隨機GUID

是否有避免此行爲的可能性或解決方法?

回答

12

我剛一起來看看爲TextWriterTraceListener的文檔,有一個備註的一路下跌的頁面

如果試圖寫入一個文件,是使用1/3或不可用,文件名將自動添加前綴GUID

因此,這似乎是設計。如果該文件確實不可用,那麼在當前的實現中就沒有辦法做到這一點。你可以嘗試的是編寫一個自定義的TextWriterTraceListener實現來覆蓋相關的Write/WriteLine方法,以便輸出到一個文件,每個用戶,一個名稱更適合你的需要。

如果你想要從終端服務器上的所有用戶進行所有日誌記錄到單個文件,那麼你幾乎可以肯定需要運行某種「擁有」該文件的「第三方」進程並同步對它的寫入,例如Windows服務,然後由您的自定義TextWriterTraceListener調用

+1

這並不能解釋我所處的情況,只有一個應用程序池運行單個工作進程,寫入指定的文件名稱和*仍然*發送多個guid命名的重複日誌文件。不能有其他進程試圖訪問該文件,因爲只有一個進程被配置爲使用它。 – 2015-03-19 10:58:03

+0

@TomW - 我處於同樣的狀況。我認爲由IIS處理的並行請求應該受到指責。也許如果每個線程有一個日誌文件,它會表現得更好。 – 2015-07-27 19:54:07