Comment charger un fichier Log4j.properties personnalisé au démarrage du printemps
Mon code dans application.properties est ici
logging.file=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
logging.level.*=INFO
logging.config=log4j.properties
Mon code dans log4j.properties est ici
log4j.rootLogger=INFO,ConsoleAppender,FileAppender
log4j.appender.ConsoleAppender=org.Apache.log4j.ConsoleAppender
log4j.appender.ConsoleAppender.layout=org.Apache.log4j.PatternLayout
log4j.appender.ConsoleAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n
log4j.appender.FileAppender=org.Apache.log4j.RollingFileAppender
log4j.appender.FileAppender.File=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
log4j.appender.FileAppender.layout=org.Apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n
Mais je ne reçois aucune sortie attendue, c’est-à-dire que le démarrage du printemps ne charge pas le fichier log4j.properties. Le démarrage du printemps a sa propre journalisation par défaut.
le fichier log4j.properties est en src/main/resources
Ma question est de savoir comment mapper le fichier log4j.properties avec la propriété logging.config dans application.properties s’il se trouve dans src/main/resources.
S'il vous plaît suggérer tous les changements nécessaires.
Merci d'avance pour toute aide.
Si vous voulez que spring boot utilise log4j au lieu de sa propre journalisation par défaut (logback), vous devez alors exclure la journalisation par défaut et inclure la dépendance log4j pour le démarrage printanier dans votre pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
de cette façon, votre fichier log4j.properties se trouvera dans src/main/resources
.
Aussi, si vous souhaitez utiliser les propriétés définies dans votre application.properties dans le fichier log4j.properties
par exemple, vous voulez avoir
log.file.path
défini dans votreapplication.properties
et l'utiliser surlog4j.properties
Ensuite, vous devez définir le filtrage dans votre pom.xml:
<filters>
<filter>src/main/resources/application.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>log4j.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
De cette façon, vous pouvez avoir:
log4j.appender.file.File=${log.file.path}/${project.artifactId}.log
dans votre fichier log4j.properties
Mon hypothèse est que votre fichier pom.xml n'est pas configuré pour inclure la dépendance log4j correcte. Si vous faites cela, cela devrait fonctionner automatiquement. Voir leur exemple à spring-boot-sample-actuator-log4j . Leur projet inclut l'artefact spring-boot-starter-log4j qui devrait ensuite permettre à votre fichier log4j.properties d'être récupéré à partir de l'emplacement actuel src/main/resources et vous n'aurez plus besoin des entrées de journalisation. * De vos propriétés. Il se peut également que vous deviez exclure leur journalisation de démarrage, car je constate qu'ils le font également. Si cela ne semble pas résoudre le problème, envoyez votre fichier POM à un endroit où je peux le voir. S'il vous plaît laissez-moi savoir si cela fonctionne pour vous.