2010-08-22 15 views
6

ACTUALIZACIÓN - No es necesario que responda esto ahora, lo he resuelto a continuación.No se puede conectar la clase de tracelistener personalizada a través de la configuración de la aplicación - ConfigurationErrorsException

Hola, estoy tratando de implementar un oyente de seguimiento personalizado en .NET, pero tengo problemas para agregar el oyente de seguimiento a través del archivo de configuración.

Encontré una publicación similar en el desbordamiento de la pila, pero no parece ayudar (How to define custom TraceListener in app.config).

El mensaje de excepción es:

ConfigurationErrorsException - "No se pudo crear ApplicationFramework.TraceListeners.TextLogTraceListener, ApplicationFramework.TraceListeners, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null".

Como puede ver en mi código a continuación, incluso he usado el nombre de AssemblyQualified después de intentar sin.

La configuración y dll existen en la aplicación que hace referencia al oyente.

¿Alguien puede detectar lo que podría estar haciendo mal aquí?

C# Código:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace ApplicationFramework.TraceListeners 
{ 
    public class TextLogTraceListener : System.Diagnostics.TextWriterTraceListener 
    { 
     public override void Write(string message) 
     { 
      using (FileStream fs = new FileStream("C:\\Test\\trace.log", FileMode.Append)) 
      { 
       StreamWriter sw = new StreamWriter(fs); 

       sw.Write(message); 
      } 
     } 

     public override void WriteLine(string message) 
     { 
      using (FileStream fs = new FileStream("C:\\Test\\trace.log", FileMode.Append)) 
      { 
       StreamWriter sw = new StreamWriter(fs); 

       sw.Write(message); 
      } 
     } 
    } 
} 

Config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 

    <system.diagnostics> 

     <trace autoflush="true" indentsize="4"> 
     <listeners> 
      <add name="TextListener" 
       type="ApplicationFramework.TraceListeners.TextLogTraceListener, ApplicationFramework.TraceListeners, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
       initializeData="trace.log" /> 
      <remove name="Default" /> 
     </listeners> 
     </trace> 

    </system.diagnostics> 

</configuration> 

simple llamada huella en aplicación de referencia:

Trace.WriteLine("Test"); 

Respuesta

12

No se preocupe, he resuelto el problema ahora.

que necesitaba para anular una de las sobrecargas del constructor:

TextLogTraceListener pública (string name): base (nombre) {

}

+0

+1 Thx para esto, nada evidente del mensaje de error inútil de que esto es lo que debe hacer. –

0

Creo que si ha quitado la initializeData desde la Web config y derivar el constructor sin ningún parámetro, habría estado bien, parece que no necesita el constructor que usa porque define FileStream manualmente.

Cuestiones relacionadas