¿Cómo puedo insertar pestañas en el patrón de diseño de log4net?
Mi necesidad es simple: quiero poder abrir mi archivo de registro de texto en excel, para que lo rompa automáticamente en columnas que coincidan con los campos de registro.
Para eso, necesito los campos de registro separados con 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.
4 answers
Advertencia: En realidad no he utilizado log4net. Pero si entiendo correctamente, la configuración es un archivo XML, ¿no? Y el patrón es solo texto con algunas fichas especiales. Entonces, ¿has intentado incrustar caracteres de pestaña reales en tu patrón? La secuencia XML para una pestaña es 	
, por ejemplo:
<conversionPattern value="%utcdate	[%thread]	%-5level	%logger	%message%newline" />
O si usted está suministrando el patrón de alguna otra manera (tal vez a través de la PatternString
constructor o lo que sea), solo incluye caracteres de tabulación en la cadena que estás pasando. Los documentos para eso constructor deferir a la PatternLayout
docs para hablar de la cadena en sí, y allí dicen :
Usted es libre de insertar cualquier texto literal dentro del patrón de conversión.
(Su énfasis. Vale la pena intentarlo, de todos modos...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-14 14:48:02
Esto funcionó para mí:
1) Cuando se instancie su clase de registro, agregue esta línea:
log4net.GlobalContext.Properties["tab"] = "\t";
2) Luego, en el XML de log4net, haga una referencia a su propiedad log4net recién creada. Por ejemplo:
<conversionPattern value="%property{tab}%message%newline" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-30 18:59:04
Puede escribir tab dentro del patrón sin escapar (ver espacio entre el nivel y la fecha):
<conversionPattern value="%level %date{HH:mm:ss,fff} ..." />
No puedo escribir tab en visual studio, porque escribe espacios, pero escribí tab en notepad++ copie (ctrl+c ctrl+v) y está funcionando.
EDITAR: el desbordamiento de pila reemplazó mi pestaña con espacios. Por lo tanto, debe escribir su propia pestaña
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-09 07:21:54
Si esto es solo sobre Excel, entonces podría usar algún otro separador, tal vez incluso un ;
sería lo suficientemente bueno.
Otra opción sería escribir su propio convertidor de patrones. Un ejemplo se puede encontrar aquí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:24:58