2017-07-18 3 views
1

suivant est mon configration de log4j2:pas créer un nouveau fichier journal une fois commencer mon service avec l'aide log4j2

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="trace" name="MyApp" packages="com.swimap.base.launcher.log"> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="logs/app-${date:MM-dd-yyyy-HH-mm-ss-SSS}.log" 
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout> 
     <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
     </PatternLayout> 
     <Policies> 
     <SizeBasedTriggeringPolicy size="1 KB"/> 
     </Policies> 
     <DefaultRolloverStrategy max="3"/> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="trace"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

le problème est que chaque fois que le démarrage de mon service, sera créé un nouveau journal, même l'ancien on n'a pas atteint la taille spécifique. Si le programme redémarre fréquemment, de nombreux fichiers journaux se termineront par '.log' qui ne seront jamais compressés.

les journaux i ont comme ceci:

quelqu'un
/log4j2/logs 
/log4j2/logs/2017-07 
/log4j2/logs/2017-07/app-07-18-2017-1.log.gz 
/log4j2/logs/2017-07/app-07-18-2017-2.log.gz 
/log4j2/logs/2017-07/app-07-18-2017-3.log.gz 
/log4j2/logs/app-07-18-2017-20-42-06-173.log 
/log4j2/logs/app-07-18-2017-20-42-12-284.log 
/log4j2/logs/app-07-18-2017-20-42-16-797.log 
/log4j2/logs/app-07-18-2017-20-42-21-269.log 

peut me dire comment puis-je ajouter connecter au fichier journal existe quand je démarre mon programme? merci beaucoup si vous pouvez m'aider plus près de la réponse !!

Répondre

0

Je suppose que votre problème c'est que vous avez fileName="logs/app-${date:MM-dd-yyyy-HH-mm-ss-SSS}.log dans votre fichier de configuration log4j2.

Ce modèle de nom de fichier signifie que log4j2 crée un fichier journal dont le nom contient la date actuelle + heures + minutes + secondes + millisecondes dans son nom.

Vous devriez probablement supprimer la section HH-mm-ss-SSS et cela vous permettra d'avoir un fichier roulant quotidien et de ne pas créer de nouveau fichier à chaque redémarrage de l'application.

Vous pouvez jouer avec le modèle et choisir le format dont vous avez besoin.

Si vous voulez un seul fichier journal pour toujours - puis créer fileName constante, comme fileName=app.log

+0

Merci beaucoup, mon pote. Vos suggestions vous semblent utiles. Toutefois, je ne peux pas modifier le format du nom du fichier journal, car les activités ne le permettent pas. –

0

Il est difficile de ne pas mettre en œuvre. Il y a une DirectFileRolloverStrategy d'interface, mettre en œuvre ci-dessous la méthode:

public String getCurrentFileName(RollingFileManager manager) 

MTBE quelqu'un a rencontré ce même problème et peut l'aider.