3 votes

log4net - création d'un seul fichier journal

J'utilise log4net et lorsque j'exécute mon application, plusieurs fichiers journaux sont créés. Il semble que log4net crée un nouveau fichier journal à chaque fois que le format temporel change, ce qui signifie que je me retrouve avec un nouveau fichier journal à chaque fois qu'une minute s'est écoulée.

J'ai probablement mal compris la syntaxe xml utilisée, mais je ne suis pas sûr de l'endroit où elle est erronée (peut-être RollingFileAppender ?).

Voici le fichier xml :

<log4net>

  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level [%thread] %logger:%line - %message%newline"/>
    </layout>
  </appender>

  <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <staticLogFileName value="false" />
    <datePattern value="yyyyMMdd_hhmm'.log'"/>
    <file value="Boghe"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level [%thread] %logger:%line - %message%newline"/>
    </layout>
  </appender>

  <root>
    <level value="ALL"/>
    <appender-ref ref="ConsoleAppender"/>
    <appender-ref ref="FileAppender"/>
  </root>

</log4net>

Remerciements

3voto

Stefan Egli Points 11708

Si vous vraiment Si vous ne voulez qu'un seul fichier, vous devez utiliser l'apporteur de fichiers normal :

http://logging.apache.org/log4net/release/config-examples.html#FileAppender

D'après vos commentaires, je suppose que votre application fonctionne pendant une période "courte" et que vous souhaitez donc que le nom de votre fichier journal contienne des informations sur la date et l'heure. Vous pouvez procéder comme suit :

<file type="log4net.Util.PatternString" value="Boghe%date{yyyyMMdd_hhmm}.log" />

Mise à jour :

Exemple de configuration (qui fonctionne pour moi) :

<appender name="FileAppender" type="log4net.Appender.FileAppender">
   <file type="log4net.Util.PatternString"
         value="c:\temp\Boghe%date{yyyyMMdd_hhmm}.log" />

   <appendToFile value="true" />
   <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date - %message%newline" />
   </layout>
</appender>

2voto

yas4891 Points 2790

Vous devez changer votre modèle de date en quelque chose comme

<datePattern value="yyyyMMdd" />

Cette opération permet de lancer votre fichier journal une fois par jour.


Exemple : Avec cette configuration

<file value="Foo" />
<StaticLogFileName value="false">
<datePattern value="yyyyMMdd_hhmm"/>

vous indiquez à l'expéditeur de fichiers de créer un nouveau fichier journal toutes les minutes (si vous écrivez quelque chose dans les journaux au moins une fois par minute).

Supposons que vous ayez commencé votre candidature à 17:00:00 on 09/21/2011 . Vous produisez des informations de journalisation toutes les secondes.
Cela signifie que pendant les 60 premières secondes (jusqu'à 17:00:59), toutes les données de sortie seront stockées dans un fichier nommé Foo20110921_1700 .
Au 17:01:00 la sortie suivante a lieu et le fichier est "reconduit", ce qui signifie qu'un nouveau fichier est créé. Foo20110921_1701 est créé.
Pendant les 60 secondes suivantes, toutes les données seront transférées dans ce nouveau fichier. La même chose se produira à nouveau à 17:02:00 , 17:03:00 et ainsi de suite.


Voir Documentation de RollingFileAppender pour plus d'informations

0voto

nijave Points 381

Alternativement, si vous ne souhaitez pas effectuer un classement par date, utilisez la valeur Size.

    <rollingStyle value="Size"/>
    <maximumFileSize value="10MB"/>

Vous roulerez donc vos fichiers tous les 10MB.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X