2009-12-10 54 views
0

我正在開發一個對時間要求嚴格的ASMX web服務,我正在使用自己的類和靜態方法將行寫入共享日誌文件。日誌記錄不會被鎖/監視器保護,因爲應用程序寫入日誌相當多。我不知道如果一個線程被調度出來,而在靜態方法中寫入一行並且另一個線程被調度也會寫入,會發生什麼。現在我問什麼是實現日誌記錄的最佳方式?如何在多線程ASP.NET web應用程序(asmx web服務)中實現日誌記錄

謝謝你 - 馬蒂

+0

這將取決於您使用的.NET和Windows的版本。你正在使用哪些版本? – 2009-12-10 20:31:36

回答

0

我同意@AdaTheDev。使用log4net,您可以創建一個客戶Appender(將記錄的消息傳送到某個目的地的部分,例如文件,電子郵件,事件日誌等)。該appender可以將日誌消息寫入MSMQ。

然後,您可以有一個小組件讀取隊列(單線程)並將消息寫入日誌文件。這意味着要記錄一條消息,只需要渲染日誌消息並將其寫入隊列即可。將消息寫入文件的行爲將是單線程的,並且與ASP.NET的關鍵業務代碼完全分離。

0

編號建議使用像log4net的第三方解決方案或NLOG代替自己TBH做,節省重新發明輪子

0

我們選擇的實現方法是使用微軟企業庫記錄塊,然後我們有一個類有一些簡化的靜態方法設置,我們稱之爲實際將日誌消息寫入日誌文件。我們在我們的多線程環境中沒有任何問題。

相關問題