log4net un fichier par exécution
J'ai besoin de mon application pour créer un fichier journal chaque fois qu'il s'exécute.
Mon format préféré serait App.journal.AAAA-MM-jj_hh-mm-ss. Si ce n'est pas possible, je me contenterais de l'application .journal.AAAA-MM-JJ.compteur
Ceci est ma configuration actuelle de l'appender:
<appender name="File" type="log4net.Appender.RollingFileAppender">
<file value="App.log"/>
<rollingStyle value="Date"/>
<datePattern value=".yyyy-MM-dd_HH-mm-ss"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
, Mais il crée un nombre aléatoire de fichiers en fonction de la date et de l'heure.
3 réponses
Je suppose que l'application ne doit créer qu'un seul fichier journal chaque fois qu'elle s'exécute, donc vous n'avez pas besoin d'un addender de fichier roulant (bien que ma solution s'applique également aux addenders de fichiers roulants):
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="c:\temp\App-%date{yyyy-MM-dd_HH-mm-ss}.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%2thread] %-5level - %message%newline" />
</layout>
</appender>
(évidemment, vous pouvez utiliser votre propre mise en page et d'autres paramètres pour l'appender de fichiers.)
Notez également que vous pouvez définir votre style de roulement comme
rollingstyle="Once"
Et il va créer un nouveau fichier chaque fois qu'il est exécuté. Si staticLogFileName
est défini sur true (par exemple, logname.log
), les journaux précédents seront définis sur logname.log.1
, logname.log.2
, etc.
Le nombre de fichiers conservés avant d'écraser le plus ancien (disons, 10) peut être contrôlé en définissant
maxSizeRollBackups="10"
Modifier:
Ma configuration, qui crée un journal datestamped par exécution (sauf si un existe, auquel cas il suit le .1
règle, ressemble à ceci:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logs\MyLog-%date{dd-MM-yyyy}.log" />
<appendToFile value="false" />
<maxSizeRollBackups value="-1" /> <!--infinite-->
<staticLogFileName value="true" />
<rollingStyle value="Once" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date [%thread] %c{1} - %m%n" />
</layout>
</appender>
Pas sûr à 100% Si j'ai besoin de appendToFile="false"
comme les documents disent que c'est fait automatiquement lorsque vous utilisez rollingStyle="Once"
, mais cela le rend plus clair dans tous les cas.
Il est documenté à partir d'apache dans les documents log4net à:
Https://logging.apache.org/log4net/release/config-examples.html
Ctrl + f Pour "par exécution de programme"
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logfile.txt" />
<appendToFile value="false" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="50GB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>