Question

Je configure Log4net pour qu'il utilise un RollingFileAppender composite afin que le fichier actuel porte toujours le nom logfile.log et que tous les fichiers suivants portent le nom logfile-YYYY.MM.dd.seq.log. seq est le numéro de séquence si un journal dépasse une certaine taille au cours d'une seule journée. Malheureusement, j'ai eu très peu de succès dans la configuration d'une telle configuration.

Modifier:

Ma configuration actuelle est collée ci-dessous. Il a été mis à jour en fonction de plusieurs réponses, ce qui me permet de répondre suffisamment à mes besoins. Cela génère des fichiers au format: fichier_journal AAAA.MM.dd.log.seq

<log4net>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingFileAppender" />
    </root>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="logs\\logfile"/>
        <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>

Une note intéressante, paramètre

<staticLogFileName value="false"/>

à true empêche le consignateur d'écrire des fichiers.

Était-ce utile?

La solution

Nous utilisons les éléments suivants (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 des fichiers Applog.log.yyyy-MM-jj

.

Autres conseils

Selon le code source de 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;
}

Je suppose donc qu'il n'est pas possible de générer un fichier journal avec le nom dont vous avez besoin. Je pense que c'est quelque chose comme logfileYYYYY-MM-jj.n.log ou similaire.

Essayez de définir cette propriété sur true:

preserveLogFileNameExtension value = " true "

Je pense que cette astuce 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

Notez que c'est le cas

            <maxSizeRollBackups value="10"/>

sera ignoré.

Voir cette answer à une question similaire de log4net

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top