He implementado un seguimiento personalizado de escucha (derivado de TextWriteTraceListener) y ahora me gustaría configurar mi aplicación para utilizar en lugar de la estándar de TextWriteTraceListener.

Primero me agrega por defecto TextWriteTraceListener con el fin de asegurarse de que funciona bien y lo hace. He aquí 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 agente de escucha de seguimiento se define en MyApp.Utils espacio de nombres y se llama FormattedTextWriterTraceListener. Así que he cambiado el tipo en la configuración de arriba para MyApp.Utils.FormattedTextWriterTraceListener y que actualmente se ve como que:

<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 iniciar sesión algo que me estoy poniendo un ConfigurationErrorsException con el mensaje:

No se pudo encontrar el tipo de clase MyApp.Utils.FormattedTextWriterTraceListener.

¿Alguien sabe cómo puedo establecer esta costumbre se escucha en config y si es posible aún?

InformationsquelleAutor RaYell | 2009-07-24

2 Comentarios

  1. 82

    Intentar especificar un montaje demasiado, así:

    <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>
    • Nombre de ensamblado es MyApp y he añadido que para el tipo de argumento
    • He editado el post, intenta especificar como que
    • Esto es dar un mensaje diferente (el mismo tipo de excepción) `no se Pudo crear MyApp.Utils.FormattedTextWriterTraceListener, MyApp.
    • ahora a encontrar el tipo, pero no se puede crear una instancia, puede ser que hay una excepción en el constructor u otros métodos, trate de establecer el punto de interrupción en el costructor y depuración
    • Estás en lo correcto. Después de modificar el constructor y la adición de la asamblea se comenzó a trabajar. Gracias.
    • Estoy recibiendo el mismo «no se Pudo crear..» error. ¿Qué hiciste para solucionar esto??
    • compruebe si usted pone a la derecha del nombre del tipo y de espacio de nombres en el archivo de configuración
    • con respecto a la «no se Pudo crear…» Error: Si usted consigue que, compruebe el InnerException de la ConfigurationErrorsException. Lo más probable es que una excepción en el oyente-constructor
    • También asegúrese de que usted realmente tiene una referencia a MyApp proyecto (desde el proyecto, donde se definen la configuración)
    • Para mí fue que me olvidé de reemplazar algunos de la base de constructores. Tenga en cuenta que en el intellisense 4 de la base constructores show up – hay dos más cuando usted presione la flecha hacia abajo que puede ser fácilmente pasado por alto.
    • Si tienes por aquí y aún no lo tengo funcionando (como yo no), como @user3141326 sugerido, proporcionar un constructor reemplazo para public CustomTraceListener(string name) : base (name) { }. Los otros pueden ser omitidos.

  2. 5

    He estado luchando con esto hace poco y sólo en caso de que ayuda a nadie…

    Yo sabía que mi tipo existido así que escribí el siguiente:

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

    En mi caso, myClassType.AssemblyQualifiedName contenidos de la cadena que yo necesitaba en mi app.archivo de configuración en el tipo de atributo.

    Por ejemplo:

    Cómo definir TraceListener personalizado en la aplicación.config

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

Dejar respuesta

Please enter your comment!
Please enter your name here