2011-07-29 41 views
2

我試圖將所有日誌消息從System.Diagnostics.Trace重定向到Common.Loggingas documented on the Common.Logging websiteStackOverflowException與Common.Logging和Common.Logging.Simple.CommonLoggingTraceListener

不幸的是,當我運行我的應用程序時,我得到StackOverflowException,我不知道爲什麼。如果我刪除<system.diagnostics>部分,它運行良好。

我用一個簡單的控制檯應用程序,這使得以Trace.WriteLine("hello");

這裏是我的完整App.config文件中的單個呼叫重複這個問題:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.diagnostics> 
    <trace> 
     <listeners> 
     <clear /> 
     <add name="commonLoggingListener" 
      type="Common.Logging.Simple.CommonLoggingTraceListener, Common.Logging" 
      initializeData="LogLevel=Trace" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

任何人都可以做任何建議,是什麼原因造成StackOverflowException

+1

我相信你現在已經知道了,但是我沒有看到任何答案。對於StackOverflowException,最常見原因之一是如果您正在使用Trace偵聽器進行通用日誌記錄。如果您將.Diag'ics.Trace的所有內容重定向到Common.Logging,那麼根據您配置的日誌工廠適配器的不同,最終可能會導致溢出。 – CodeMonkeyKing

回答

0

我已經從這個問題現在移動,但是我覺得從CodeMonkeyKing答案很可能是準確的:

我敢肯定,你想通了這一點現在,但我不看到任何 的答案。如果您正在使用Trace偵聽器進行通用記錄,則StackOverflowException的最常見原因之一是 。它 將是有意義的,如果你重定向所有.Diag'ics.Trace到 Common.Logging,你可能最終溢出取決於 你配置了哪個日誌工廠適配器。