¿Cuál es la mejor forma de iniciar sesión en un archivo usando log4net que tenga el formato correcto (XML correcto, formato correcto de marca de tiempo, datos personalizados en formato correcto, atributos correctos, básicamente de la misma manera que lo hace XmlWriterTraceListener) por lo que se puede ver en el Service Trace Viewer Tool (SvcTraceViewer.exe)?Uso de log4net para crear archivos de registro que se pueden ver con SvcTraceViewer.exe
Respuesta
No fue una respuesta, pero hoy he preguntado question sobre el registro y WCF y una de las cosas que quería saber era sobre Service Trace Viewer. Todos los ejemplos que he visto describen los archivos XML consumidos por Service Trace Viewer generados a través de System.Diagnostics TraceSources y System.Diagnostics XmlFileListener. De todos modos, si recibo alguna respuesta en mi post, puede que les resulte útil.
Si quisiera hacer esto, escribiría mi diseño personalizado. No (todavía) miré los detalles, pero escribiría una clase que deriva de XmlLayoutBase
. Necesito más tiempo para ver los detalles ...
También podría escribir su propio appender, pero creo que en este caso tiene más sentido escribir una clase de diseño.
Editar: Tal vez escribir su propio appender es una buena idea. En ese caso, podría usar la clase System.ServiceModel.Diagnostics.DiagnosticTrace
. Aún no estoy seguro si ese es el camino a seguir. No tengo mucho tiempo en este momento, pero investigaré esto.
Creo que tomará una cantidad de tiempo considerable para imitar por completo el formato con todas las opciones de XmlWriterTraceListener. – bitbonk
Eso es lo que también temo, de ahí mi nueva propuesta. –
A qué clase System.ServiceModel.Diagnostics.DiagnosticTrace se refiere. En el GAC solo encuentro uno que es ensamblado interno y no se puede usar. – bitbonk
He aquí una idea:
Se podría escribir un log4net encargo Appender de y tienen que escribir mensajes (indirectamente) a la XmlWriterTraceListener. Dentro del método Agregar, simplemente envíe el mensaje a System.Diagnostics.
Aquí hay un example de un Appender personalizado.
En el ejemplo, se anula Append. Se pasa una clase/estructura LoggingEvent. Para sus propósitos (para obtener la salida log4net enrutada a un formato de salida que SvcTraceViewer pueda leer), puede escribir su salida a System.Diagnostics (configurándola primero para iniciar sesión en el XmlWriterTraceListener). Puede escribir utilizando métodos Trace.Write *, métodos Trace.Trace * o TraceSources.
Para TraceSources, podría considerar que el nombre de TraceSource es el mismo que el nombre del registrador (que está disponible en la clase/estructura LoggingEvent). Por lo tanto, podría configurar un TraceSource en su archivo app.config para cada nombre de log4net logger que quiera ingresar al archivo xml. Su lógica de Anexar podría verse más o menos así:
protected override void Append(LoggingEvent le)
{
TraceSource ts = new TraceSource(le.LoggerName); // Not sure of logger name field in LoggingEvent
ts.TraceEvent(LogLevelToTraceEventType(le.Level), 0, le.FormattedMessage);
}
Esto podría darle lo que desea. Tenga en cuenta que en realidad no he hecho esto, por lo que no puedo decir si es una buena idea o no, pero ciertamente parece que funcionaría.
Lo siento por ser breve, pero estoy tratando de terminar esto antes de tener que irme.
Escribir un appender personalizado (con el único propósito de formatear) tiene un inconveniente: no puedo usar todos los otros Anexos (RollingFileAppender, FileAppender, ...) o tendría que subclasificarlos a todos. – bitbonk
FWIW, puede encontrar el código para el XmlWriterTraceListener aquí: http://www.koders.com/csharp/fid7ECC273D0A665AFFDB9276AC64289085CD1E2A8E.aspx?s=DateTime No estoy seguro de cuán actual es (es decir .NET 1.1, 2.0, 3.0 , etc.), pero parece mostrar cómo diseñar el xml en un formato que puede ser consumido por SvcTraceViewer. Tal vez esto podría usarse para desarrollar un XmlLayout. Realmente no estoy muy familiarizado con la escritura de diseños de log4net, por lo que no puedo decir si esta es una buena idea o no. – wageoghe
Un appender personalizado no es posible en mi humilde opinión porque no puedo escribir a otros appenders utilizando ese mismo formato. Me gustaría escribir en RollingFileAppender usando el formato. – bitbonk
- 1. Log4net - Crear nuevo archivo de registro cada vez que se inicia la aplicación
- 2. Uso de otros niveles de registro log4net que los habituales
- 3. ¿Log4Net puede eliminar archivos de registro automáticamente?
- 4. log4net registro centralizado para múltiples componentes
- 5. Log4net: archivos de registro separados para cada clase
- 6. ¿Cómo puedo utilizar la cola para ver un archivo de registro que se recrea con frecuencia?
- 7. Log4net EventLogAppender No de registro para registro personalizado Evento
- 8. Cómo cifrar los archivos de registro de log4net
- 9. Uso de msmq para el registro asincrónico
- 10. Configurar Log4net para escribir en varios archivos
- 11. Registro Log4net y Unity
- 12. Log4net generación de registro de nombre de archivo incorrecto
- 13. registro de base de datos de log4net con parámetros personalizados
- 14. ¿Cómo usar log4net como mecanismo de registro para SSIS?
- 15. ¿Podemos crear archivos de registro utilizando javascript
- 16. php Registro de actividad para ver qué archivos se están ejecutando
- 17. Configuración de un registro de eventos personalizado para log4net
- 18. Habilite el registro de archivos para log4net desde el código en lugar de desde la configuración
- 19. log4net no puede crear archivo de registro, cuando se publica en el servidor
- 20. Anexar actual Fecha de Archivo de registro con Log4net
- 21. Log4Net/C# - Deshabilitar el registro predeterminado
- 22. Uso de PHPExcel para crear archivos de Excel generados automáticamente
- 23. Log4Net o Bloque de aplicación de registro
- 24. ¿Cómo ver los archivos de registro en MySQL?
- 25. No se pueden emitir mensajes de registro en MbUnit + TestDriven
- 26. Los nodos de Erlang no se pueden ver
- 27. visor de registro decente que trabaja con Nlog
- 28. ¿Dónde creará log4net este archivo de registro?
- 29. Log4Net configurando el nivel de registro
- 30. Crear asociación antes de que se guarde el registro
Creo que te refieres a System.Diagnostics.XmlWriterTraceListener. – bitbonk
Tiene razón. Escribí eso sin verificar el nombre exacto del oyente. De todos modos, todavía estoy interesado en cómo obtener salida (si es posible) de log4net, NLog, etc. que es compatible con SvcTraceViewer.exe. – wageoghe