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 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&quot;.log&quot;"/>
        <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.

22
demandé sur Askolein 2008-10-28 17:40:01

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

14
répondu paul 2008-10-28 14:49:15

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.

4
répondu Leandro López 2013-10-01 17:15:57

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

1
répondu Junrui 2013-07-19 18:02:58

notez que c'est le cas du

            <maxSizeRollBackups value="10"/>

sera ignoré.

voir cette réponse à une question log4net similaire

0
répondu Chasler 2017-05-23 12:26:27