2010-03-27 4 views
9

J'ai utilisé RollingFileAppender. Et je veux ajouter une ligne vide dans le journal lorsque mon programme se lance. Comment faire ça? Merci.Comment ajouter une ligne vierge dans le fichier journal en utilisant log4net?

Editer: OK, merci à tous. Désolé pour la question confuse que j'ai posée. Laissez-moi vous expliquer. Je config le log4net comme suit:

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

et le journal sont les suivants:

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. 

Ce que je souhaite faire est le journal ressemble à ceci:

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

Toute idée? Merci.

+0

désolé, pourquoi voulez-vous ajouter une ligne blanche? :-) Et aussi .. votre problème est de savoir comment se connecter avec log4net la ligne blanche ou WHERE pour mettre cette phrase de journal? –

+0

Vous avez raison. Ma question sera comment se connecter avec log4net la ligne blanche. Pouvez-vous me dire comment? Merci. – Jollian

+1

Quel est le problème avec la fonctionnalité d'en-tête/pied de page intégrée (voir http://logging.apache.org/log4net/release/faq.html # layout-header-xml-newlines) – sgmoore

Répondre

4

Vous auriez besoin d'un appender spécial. Ici vous avez un exemple de configuration


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

Cette configuration permet l'insertion d'une ligne blanche, COMPLÈTEMENT BLANC (< valeur conversionPattern = "% Message% newline"/>)

Et le code pour ouvrir une session serait

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

Un dernier commentaire: cela vous permet de faire ce que je pense que vous voulez, mais je ne voudrais pas le faire dans mon propre :-) de développement si je mal compris votre question s'il vous plaît l et moi know

EDIT1 Cet appender/enregistreur est ajouté à votre configuration existante. Ce serait seulement utilisé pour générer la ligne blanche dont vous avez besoin. Pour le reste de l'enregistrement que vous utilisez votre enregistreur/appender existant précédemment,

+0

Merci pour votre réponse. Mais cela fera insérer une nouvelle ligne à chaque fois que je me connecte. J'ai fait quelques explications à ma question. Vous devriez jeter un coup d'oeil là-dessus, si vous avez encore un intérêt pour la question. – Jollian

+0

Bonne solution. Merci beaucoup. – Jollian

4

Log.Debug (Environment.Newline);

+0

Merci pour votre réponse. J'ai édité la question. C'est peut-être plus clair. Votre solution peut en effet ajouter une nouvelle ligne. Mais la dernière logline serait peu étrange. – Jollian

2

changement

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

avec

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

Cela ajoutera deux nouvelles lignes à la fin du fichier. Le premier sera là comme une nouvelle ligne, le second sera le point de départ du prochain journal.

19

La réponse sélectionnée est BEAUCOUP plus difficile qu'elle ne devrait l'être. Je ne sais pas si cela n'existait pas lorsque la question a été posée à l'origine, mais la façon correcte de le faire est avec un <header> ou <footer> dans la mise en page de l'appender. Quelque chose comme ceci:

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

Cela va insérer une ligne vide comme pied de page à chaque exécution de journalisation. Plus de détails est ici: http://logging.apache.org/log4net/release/faq.html#layout-header-xml-newlines

+0

A travaillé brillamment pour moi. Convenu que c'est beaucoup plus simple que la réponse acceptée. –

+0

Oui, c'est la bonne façon. Très facile. –

+0

@Nick Cela ne semble pas répondre à l'exigence de la question d'origine. L'exigence était d'insérer une ligne vide à la fin de la course du programme. Cette solution insère une ligne vide après ** chaque ** entrée de journal. – kannankeril

Questions connexes