2009-07-24 27 views
60

Implementé un detector de seguimiento personalizado (derivado de TextWriteTraceListener) y ahora me gustaría configurar mi aplicación para usarla en lugar del estándar TextWriteTraceListener.Cómo definir TraceListener personalizado en app.config

Primero he agregado el valor predeterminado TextWriteTraceListener para asegurarme de que funciona bien y lo hace. Aquí está mi 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> 

Ahora mi rastro de detector se define en MyApp.Utils espacio de nombre y se llama FormattedTextWriterTraceListener. Así que cambió el tipo en la configuración anterior para MyApp.Utils.FormattedTextWriterTraceListener y en la actualidad se ve así:

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

Sin embargo, ahora cuando trato de entrar algo de lo que estoy poniendo un ConfigurationErrorsException con el mensaje:

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

¿Alguien sabe cómo puedo configurar este oyente personalizado en config y si es posible?

Respuesta

75

intente especificar una asamblea también, de este 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

nombre de Asamblea es 'MyApp' y añadió que al argumento de tipo – RaYell

+1

edité puesto, intenta especificar el estilo –

+1

Esto está dando un mensaje diferente (igual tipo de excepción) 'No se pudo crear MyApp.Utils.FormattedTextWriterTraceListener, MyApp. – RaYell

3

He estado luchando con esto recientemente y en caso de que ayuda a cualquier persona ...

sabía que mi tipo existía así que escribí lo siguiente:

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

en mi caso, myClassType.AssemblyQualifiedName contenía la cadena que necesitaba en mi archivo app.config en el atributo type.

Por ejemplo:

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