2009-07-24 17 views
60

Ho implementato un listener di traccia personalizzato (derivato da TextWriteTraceListener) e ora desidero impostare la mia applicazione per utilizzarlo invece dello standard TextWriteTraceListener.Come definire TraceListener personalizzato in app.config

Prima ho aggiunto il valore predefinito TextWriteTraceListener per assicurarmi che funzioni correttamente e lo sia. Ecco il mio 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> 

Ora la mia traccia ascoltatore è definita nel namespace MyApp.Utils e si chiama FormattedTextWriterTraceListener. Così ho cambiato il tipo nella configurazione sopra per MyApp.Utils.FormattedTextWriterTraceListener ed attualmente sembra che che:

<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> 

Comunque ora quando provo ad accedere una cosa che sto ottenendo un ConfigurationErrorsException con il messaggio:

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

Qualcuno sa come posso impostare questo listener personalizzato in configurazione e se è addirittura possibile?

risposta

75

Prova a specificare un'assemblea troppo, in questo modo:

<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

nome dell'Assemblea è 'myapp' e ho aggiunto che al tipo di argomento – RaYell

+1

Ho modificato dopo, tenta di specificare come quello –

+1

Questo sta dando un messaggio diverso (lo stesso tipo di eccezione) 'Impossibile creare MyApp.Utils.FormattedTextWriterTraceListener, MyApp. – RaYell

3

ho lottato con questo di recente e solo nel caso in cui aiuta a chiunque ...

Sapevo che il mio tipo esisteva così ho scritto il seguente:

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

nel mio caso, myClassType.AssemblyQualifiedName conteneva la stringa di cui avevo bisogno nel mio file app.config in type.

Ad esempio:

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> 
Problemi correlati