print debug .net configuration exception-handling trace trace-listener

.net - debug print c#



Cómo definir un TraceListener personalizado en app.config (2)

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

Primero agregué TextWriteTraceListener predeterminado 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 traza oyente se define en el espacio de nombres MyApp.Utils y se llama FormattedTextWriterTraceListener . Así que cambié el tipo en la configuración anterior a MyApp.Utils.FormattedTextWriterTraceListener y actualmente 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 intento registrar algo, obtengo una ConfigurationErrorsException con el mensaje:

No se pudo encontrar el tipo para la clase MyApp.Utils.FormattedTextWriterTraceListener.

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


Intente especificar un ensamblaje también, de esta forma:

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


He estado luchando con esto recientemente y solo en caso de que ayude a alguien ...

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 de tipo.

Por ejemplo:

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