2009-07-24 84 views
60

我已經實現了自定義跟蹤偵聽器(派生自TextWriteTraceListener),現在我想設置我的應用程序使用它而不是標準TextWriteTraceListener如何在app.config中定義自定義TraceListener

首先,我添加了默認TextWriteTraceListener以確保它可以正常工作。這裏是我的app.config:

<configuration> 
    <system.diagnostics> 
     <trace autoflush="true" indentsize="4"> 
      <listeners> 
       <add name="TextListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log" /> 
      <remove name="Default" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
</configuration> 

現在我的跟蹤偵聽器在MyApp.Utils命名空間中定義,這就是所謂FormattedTextWriterTraceListener。所以我改變了型在配置上面MyApp.Utils.FormattedTextWriterTraceListener,它目前看起來像這樣:

<configuration> 
    <system.diagnostics> 
     <trace autoflush="true" indentsize="4"> 
      <listeners> 
       <add name="MyTextListener" type="MyApp.Utils.FormattedTextWriterTraceListener" initializeData="trace.log" /> 
      <remove name="Default" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
</configuration> 

但是現在,當我嘗試登錄的東西,我得到一個ConfigurationErrorsException與消息:

Couldn't find type for class MyApp.Utils.FormattedTextWriterTraceListener.

有誰知道我該如何在配置中設置這個自定義偵聽器,如果它甚至可能?

回答

75

嘗試指定的組件太像這樣:

<configuration> 
    <system.diagnostics> 
     <trace autoflush="true" indentsize="4"> 
      <listeners> 
       <add name="TextListener" 
        type="MyApp.Utils.FormattedTextWriterTraceListener, MyApp" 
        initializeData="trace.log" /> 
      <remove name="Default" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
</configuration> 
+0

大會名稱爲'MyApp`,我補充說,類型參數 – RaYell 2009-07-24 09:29:48

3

我一直是這樣最近以防萬一它有助於任何掙扎...

我知道我喜歡的類型存在,所以我寫了如下:

Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof("yourclassname")); 
Type myClassType = assembly.GetType("yournamespace.yourclassname"); 

在我的情況,myClassType.AssemblyQualifiedName包含我需要在我的app.config文件中的type屬性中的字符串。

例如:

enter image description here

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" switchValue="Information,ActivityTracing" propagateActivity="true"> 
     <listeners> 
      <add name="CircularTraceListener" /> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="CircularTraceListener" type="Microsoft.Samples.ServiceModel.CircularTraceListener, CircularTraceListener, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
      initializeData="C:\MyWebService\APILog\CircularTracing-service.svclog" maxFileSizeKB="1000" /> 
    </sharedListeners> 
    <trace autoflush="true" /> 
    </system.diagnostics> 
相關問題