2015-12-05 1 views
0

Actuellement, j'utilise log4net version 1.2.10.0 pour écrire des journaux pour mon application de fenêtre .net. Est-il vrai que si le style de roulement est basé sur la date, l'ancien fichiers journaux ne seront pas supprimés automatiquement même si je mets la déclaration ci-dessous:Log4net - Supprime les anciens fichiers journaux basés sur la date

RollingFileAppender rollingFileAppender = new RollingFileAppender(); 
rollingFileAppender.MaxSizeRollBackups = 2; 

S'il est vrai, comment puis-je retiré ces fichiers journaux anciens automatiquement en écrivant quelques déclarations dans mon code?

+1

double possible de (http [peut Log4Net Supprimer les fichiers journaux automatiquement?]: // stackoverflow.com/questions/4259795/can-log4net-delete-log-files-automatiquement) – PHeiberg

+0

Il y a toujours [un problème ouvert] (https://issues.apache.org/jira/browse/LOG4NET-27) dans Log4net sur ce . – PHeiberg

+0

Puis-je vous demander pourquoi vous vous souciez de la date? vous pouvez spécifier le nombre de fichiers dont il a besoin pour se déplacer. cela ne fait-il pas aussi bien l'affaire? Ou avez-vous des exigences très spécifiques pour les fichiers journaux? – bas

Répondre

1

Un exemple fragment de la façon de configurer un appender:

<appender name="ContextLogAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="..\Logs\ContextLog\context.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="100" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true"/> 
    <countDirection value="1"/> 
    <PreserveLogFileNameExtension value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss,fff} [%-5level][thread: %thread][%logger] %message%newline" /> 
    </layout> 
    <filter type="log4net.Filter.LevelMatchFilter"> 
     <levelToMatch value="PRODUCTION" /> 
    </filter> 
    <filter type="log4net.Filter.LevelMatchFilter"> 
     <levelToMatch value="CONTEXT" /> 
    </filter> 
    <filter type="log4net.Filter.LevelMatchFilter"> 
     <levelToMatch value="INFO" /> 
    </filter> 
    <filter type="log4net.Filter.LevelMatchFilter"> 
     <levelToMatch value="WARN" /> 
    </filter> 
    <filter type="log4net.Filter.LevelMatchFilter"> 
     <levelToMatch value="ERROR" /> 
    </filter> 
    <filter type="log4net.Filter.LevelMatchFilter"> 
     <levelToMatch value="FATAL" /> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter" /> 
    </appender> 

Cette appender enregistre un tas de catégories dans le fichier journal. Les attributs que vous intéresse le plus (je pense)

<appendToFile value="true" /> 

append au dernier fichier journal si le vrai style de roulement

<rollingStyle value="Size" /> 

peut être la taille, la date ou composite. Je pense que vous cherchez un composite. Dans cet exemple, il est défini sur Taille, ce qui signifie que la définition de roulement uniquement examine la quantité de tous les fichiers journaux produits. Si le nombre maximal de fichiers est atteint, le fichier journal le plus ancien sera écrasé.

<maxSizeRollBackups value="100" /> 

Ceci est la définition des fichiers journaux autorisés maximum pour cet appender.

<maximumFileSize value="10MB" /> 

chaque fichier journal créé par cette appender a une limite de taille limite max définie; 10 Mo par fichier (donc dans ce cas: 100 * 10 Mo = 1 Go de fichiers journaux est la plus grande quantité de journalisation que nous autorisons, pour cet appender).

<staticLogFileName value="true"/> 

Cela fait que je toujours écrire dans le même fichier journal, afin que je puisse avoir confiance que quand je regarde context.log je regarde l'enregistrement le plus récent. Cela ne fonctionnera pas si vous voulez compter sur la date de roulement.

Quote: La taille du fichier est différent pour chaque jour, ce que je veux obtenir est un fichier sera supprimé pour chaque jour, de sorte que la même quantité de fichiers journaux seront stockés dans les jours

Vous n'êtes pas à la recherche d'une fenêtre «roulante» de loggings. Vous recherchez "sauvegarder les enregistrements" pour chaque jour. Je ne pense pas que ce soit facile à réaliser simplement en configurant log4net. Il est possible de définir le style de roulement sur Composite, afin qu'il recherche un modèle de date et un nombre maximal de fichiers.

Par ex vous pouvez configurer log4net pour écrire 10 fichiers journaux par jour avec une taille maximale pour chaque fichier journal produit.

<rollingStyle value="Composite" /> 
<datePattern value=".yyyyMMdd" /> 
<maxSizeRollBackups value="10" /> 
<maximumFileSize value="10MB" /> 

Ceci entraînerait une journalisation maximale de 100 Mo par jour. Mais cela ne répond toujours pas à votre question ...

HTH un peu si ...

+0

merci pour votre exemple et l'explication. – YWah