2010-03-27 7 views
9

Utilicé RollingFileAppender. Y quiero agregar una línea en blanco al registro cuando se inicia mi programa. ¿Como hacer eso? Gracias.¿Cómo agregar una línea en blanco en el archivo de registro usando log4net?

Edit: OK, gracias por todos ustedes. Perdón por la pregunta confusa que hice. Déjame hacer una explicación. que la config log4net de la siguiente manera:

<log4net> 
    <appender name="MyFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="ClientLog.log" /> 
    <param name="AppendToFile" value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date{yyyy/MM/dd HH:mm:ss},%5p,%m%n" /> 
    </layout> 
    </appender> 

    <logger name="GlobalUse" > 
    <level value="Info"/> 
    <appender-ref ref="MyFileAppender" /> 
    </logger> 

</log4net> 

y el registro será:

2010/03/27 13:55:27, INFO, Program start. 
2010/03/27 13:55:29, INFO, Program end. 
2010/03/27 13:56:30, INFO, Program start. 
2010/03/27 13:56:32, INFO, Program end. 

lo que espero es que el registro es el siguiente:

2010/03/27 13:55:27, INFO, Program start. 
2010/03/27 13:55:29, INFO, Program end. 

2010/03/27 13:56:30, INFO, Program start. 
2010/03/27 13:56:32, INFO, Program end. 

2010/03/27 13:57:30, INFO, Program start. 
... 

Alguna idea? Gracias.

+0

lo siento, ¿por qué quieres agregar una línea blanca? :-) Y también ... ¿su problema es cómo iniciar sesión con log4net en la línea blanca o DÓNDE poner esa sentencia de registro? –

+0

Tienes razón. Mi pregunta será cómo registrar con log4net la línea blanca. ¿Puedes decirme como? Gracias. – Jollian

+1

¿Qué hay de malo con la función integrada de encabezado/pie de página (ver http://logging.apache.org/log4net/release/faq.html # layout-header-xml-newlines) – sgmoore

Respuesta

4

Necesitará un appender especial. Aquí tienes un ejemplo de configuración


<log4net> 
    ... 
    <appender name="MyRollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\temp\mylog.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <datePattern value="yyyyMMdd" /> 
    <staticLogFileName value="true" /> 
    <maximumFileSize value="2MB" /> 
    <maxSizeRollBackups value="20" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%message%newline" /> 
    </layout> 
    </appender> 

    <logger name="MyLogger"> 
    <level value="Info" /> 
    <appender-ref ref="MyRollingLogFileAppender" /> 
    </logger> 
    ... 
</log4net> 

Esta configuración permite la inserción de una línea blanca, completamente blanco (< valor conversionPattern = "%% message nueva línea"/>)

Y el código para iniciar la sesión sería

LogManager.GetLogger("MyLogger").Info("");

Un último comentario: esto le permite hacer lo que creo que quieres, pero yo no lo haría en mi propia :-) el desarrollo si no he entendido bien su pregunta, por favor l et me know

EDIT1 Este appedender/logger se AÑADE a su configuración existente. SÓLO se usaría para generar la línea blanca que necesita. Para el resto de la tala que usaría su registrador/appender previamente existente,

+0

Gracias por su respuesta. Pero eso hará que inserte una nueva línea cada vez que me registre. Hice una explicación a mi pregunta. Tendría un vistazo a eso, si todavía tiene interés en la pregunta. – Jollian

+0

Buena solución. Muchas gracias. – Jollian

4

Log.Debug (Environment.Newline);

+0

Gracias por su respuesta. Edité la pregunta. Eso tal vez más claro. Su solución puede agregar una nueva línea de hecho. Pero el último logline sería poco extraño. – Jollian

2

Cambio

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%message%newline" /> 
</layout> 

con

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%message%newline%newline" /> 
</layout> 

Esto añadirá dos nuevas líneas al final del archivo. El primero estará allí como una nueva línea, el segundo actúa como punto de partida para el siguiente registro.

19

La respuesta seleccionada es MUCHO más difícil de lo que debe ser. No estoy seguro de si no existía cuando se formuló originalmente la pregunta, pero la forma correcta de hacerlo es con un <header> o <footer> en el diseño del apéndice. Algo como esto:

<layout type="log4net.Layout.PatternLayout"> 
    <footer value="&#13;&#10;" /> 
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
</layout> 

Eso insertará una línea en blanco como pie de página en cada ejecución de registro. Más detalles está aquí: http://logging.apache.org/log4net/release/faq.html#layout-header-xml-newlines

+0

Trabajó brillantemente para mí. Acordó que esto es mucho más simple que la respuesta aceptada. –

+0

Sí, esta es la forma correcta. Muy fácil. –

+0

@Nick Esto no parece abordar el requisito en la pregunta original. El requisito era insertar una línea en blanco al final de la ejecución del programa. Esta solución inserta una línea en blanco después de ** cada ** entrada de registro. – kannankeril

Cuestiones relacionadas