Je cours une application spring-boot
war
dans tomcat8
et utilise log4j2
pour la journalisation. Problème:Comment configurer le dossier log4j2 dans tomcat?
- les journaux se trouvent dans le mauvais répertoire
- les journaux ne tournent pas correctement
log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingRandomAccessFile name="APP" fileName="logs/my-application.log"
filePattern="logs/archive/my-application-%d{yyyy-MM-dd}.log">
<PatternLayout pattern="%d %p %c{1.}: %m%n" charset="UTF-8" />
<Policies>
<TimeBasedTriggeringPolicy modulate="true"/>
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="DEBUG">
<AppenderRef ref="APP" />
</Root>
</Loggers>
</Configuration>
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</dependency>
Résultat: les journaux se trouvent dans /var/log/tomcat8/my-application.log
. Les archives dans /var/log/tomcat8/my-application.log.gz
Ceci est vraiment étrange. Les noms de fichier d'enregistreur corrects sont récupérés. Mais maintenant les dossiers.
Question: pourquoi mon dossier /logs
n'est-il pas pris en compte? Et pourquoi le nom d'archive compressé ne contient-il pas l'horodatage?
Sidenote: exécuter l'application en tant que jar
dans mon idée fonctionne parfaitement. Il crée automatiquement un dossier /logs
sous la racine de classpath. Et tous les fichiers sont correctement déplacés à /archive
à minuit, avec horodatage!
Mais pourquoi cela ne fonctionne-t-il pas tel quel dans Tomcat?