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