2017-01-24 1 views
1

J'ai essayé d'archiver le fichier de consignation de mes applications qui sont plus anciennes qu'une certaine période. Nous avons remarqué que depuis log4j 2.5 nous avons un tag Delete qui vous permet de définir les critères sur la base desquels nous pouvons supprimer/archiver nos logs. J'ai essayé d'utiliser cela, mais je ne suis pas en mesure de le craquer. Essayé avec une valeur de 0day 30d de 30 jours et qui ne fonctionne pas sur mon serveur et aucune politique de 20 secondes PT20S fonctionnant dans ma machine de développement.Archivage du fichier journal à l'aide de log4j2 2.5

Toute direction est grandement appréciée.

XML est comme ci-dessous:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
    <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{yyyyMMdd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
    </Console> 
    <RollingFile name="RollingFile" fileName="C://logs///test.log" filePattern="C://logs//test-%d{MM-dd-yyyy}.log.gz" ignoreExceptions="false"> 
     <PatternLayout pattern="%d{yyyyMMdd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     <TimeBasedTriggeringPolicy /> 
     <DefaultRolloverStrategy> 
     <Delete basePath="C://logs//" maxDepth="2"> 
      <IfFileName glob="*/test-*.log.gz" /> 
      <IfLastModified age="PT20S" /> 
     </Delete> 
     </DefaultRolloverStrategy> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="INFO"> 
     <AppenderRef ref="Console" /> 
     <AppenderRef ref="RollingFile" /> 
    </Root> 
    </Loggers> 
</Configuration> 
+1

Vous pouvez déboguer en définissant '' au début du fichier de configuration. –

Répondre

1

Si vous utilisez Windows le fichier et filePattern du appender RollingFile pouvez utiliser des barres obliques simples. Les doubles barres obliques peuvent le confondre.

Vous pouvez déboguer en définissant <Configuration status="trace"> au début du fichier de configuration.


Mise à jour:

Les fichiers roulées sur se retrouvent dans le répertoire c:/logs (filePattern="C://logs//test-%d{MM-dd-yyyy}.log.gz").

Cependant, l'action Supprimer est configurée pour ne regarder que les fichiers se terminant par "log.gz" qui se trouvent dans sous-répertoires de c:/logs. Les fichiers du répertoire c:/logs ne correspondent pas à glob="*/test-*.log.gz".

Pour résoudre ce problème, utilisez glob="test-*.log.gz". Il a été mentionné dans les commentaires que changer glob en regex a également résolu le problème.

+0

La machine cible sera un serveur Unix. Essayer de comprendre le problème dans mon Win Dev Machine. Laissez-moi essayer le réglage de débogage. Y a-t-il autre chose dans la config qui vous semble évident? – Vikas

+0

J'ai peut-être trouvé quelque chose. Mise à jour ma réponse –

+0

C'était effectivement le problème. changer glob à regex kicked dans l'archivage de journal. Désolé le délai de réponse. Aussi, Pouvez-vous mettre à jour votre commentaire en tant que réponse et aussi avec le changement glob/regex afin que je puisse accepter cela? – Vikas