Comment configurer un RollingFileAppender pour lancer par date et taille avec log4net?
je suis configure log4net pour utiliser un RollingFileAppender composite de sorte que le fichier courant est toujours appelé logfile.log et tous les fichiers suivants sont nommés logfile-YYYY.MMM.dd.seq.log où seq est le numéro de séquence si un log dépasse une certaine taille en une seule journée. Malheureusement, j'ai eu très peu de succès dans la configuration d'une telle installation.
Edit:
ma configuration actuelle est collée ci-dessous. Il a été mis à jour basé sur plusieurs réponses qui me fait assez proche de mes besoins. Cela génère des fichiers du format: logfile_yyy.MMM.dd.log.seq
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logslogfile"/>
<staticLogFileName value="false"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="_yyyy.MM.dd".log""/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="75KB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
il est intéressant de noter, paramètre
<staticLogFileName value="false"/>
à true provoque le logger à ne pas écrire de fichiers.
4 réponses
nous utilisons ce qui suit (dans Log4J):
<appender name="roller" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="Applog.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[slf5s.start]%d{DATE}[slf5s.DATE]%n%p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n%c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n"/>
</layout>
</appender>
Cela nous donne Applog.journal.AAAA-MM-JJ files
selon le code source log4net RollingFileAppender:
protected string GetNextOutputFileName(string fileName)
{
if (!m_staticLogFileName)
{
fileName = fileName.Trim();
if (m_rollDate)
{
fileName = fileName + m_now.ToString(m_datePattern, System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
if (m_countDirection >= 0)
{
fileName = fileName + '.' + m_curSizeRollBackups;
}
}
return fileName;
}
donc je suppose qu'il n'est pas possible de générer un fichier log avec le nom dont vous avez besoin. Je pense que c'est quelque chose comme logfileYYYY-MM-dd.n.log
ou similaire.
essayer de définir cette propriété à true:
preserveLogFileNameExtension value= "true"
je crois que ce tour vous aidera! Cependant, la propriété preserveLogFileNameExtension nécessite la dernière version de log4net, vous pouvez la trouver ici: logging.apache.org/log4net/download.html