2010-10-14 9 views
26

Mi necesidad es simple: quiero poder abrir mi archivo de registro de texto en Excel, para que se divida automáticamente en columnas que coincidan con los campos de registro.¿Cómo inserto las pestañas en el patrón de diseño log4net?

Para eso, necesito los campos de registro separados por una pestaña.

Mi patrón es: %utcdate [%thread] %-5level %logger - %message%newline

necesito algo como: %utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline

Gracias.

Respuesta

40

Advertencia: en realidad no he usado log4net. Pero si entiendo correctamente, la configuración es un archivo XML, ¿no es así? Y el patrón es solo texto con algunos tokens especiales. ¿Has intentado incrustar caracteres tabulares en tu patrón? La secuencia XML de una ficha es 	, por ejemplo:

<conversionPattern value="%utcdate&#9;[%thread]&#9;%-5level&#9;%logger&#9;%message%newline" /> 

O si lo está suministrando el patrón de alguna otra manera (tal vez a través de la PatternString constructor o lo que sea), basta con incluir los caracteres de tabulación en la cadena que está pasando en . los documentos para que el constructor se remiten al PatternLayout docs para hablar de la propia cadena, y there they say:

Usted es libre de insertar cualquier texto literal dentro del patrón de conversión.

(Su énfasis.) Vale la pena intentarlo, de todos modos ...

+2

Gracias. \ t no funciona, pero funciona de hecho. – mark

+0

@mark: Buen trato, me alegro de que haya ayudado. –

0

Si esto es solo acerca de Excel, entonces podría utilizar otro separador, tal vez incluso un ; sería lo suficientemente bueno.

Otra opción sería escribir su propio convertidor de patrones. Se puede encontrar un ejemplo here.

+0

No, esto no es solo para Excel. El archivo debe seguir siendo legible por humanos. – mark

+0

Luego vaya a la opción 2. Por lo que puedo decir log4net actualmente no puede hacer lo que quiere. –

6

Esto funcionó para mí:

1) Cuando se instancia la clase de registro, agregue esta línea:

log4net.GlobalContext.Properties["tab"] = "\t"; 

2) A continuación, en el XML de log4net, haga una referencia a su propiedad de log4net recién creada. Por ejemplo:

<conversionPattern value="%property{tab}%message%newline" /> 
+0

Esta solución funcionó mejor para mí porque aplico xml transforma a log4net.xml (con slowcheeath), y eso convierte de nuevo a un carácter de tabulación. – BernardV

0

es posible escribir de lengüeta en el patrón sin escapar (ver el espacio entre el nivel y la fecha):

<conversionPattern value="%level %date{HH:mm:ss,fff} ..." /> 

me puedo escribir de tabulación en Visual Studio, porque escribe espacios, pero Escribí tab en el bloc de notas ++ copíelo (ctrl + c ctrl + v) y está funcionando.

EDITAR: desbordamiento de pila reemplazó mi pestaña con espacios. Por lo tanto, debe escribir su propia pestaña

Cuestiones relacionadas