slf4j - logback : Créer un fichier de log spécifique par appel webservice
Bonjour,
J'ai une application Java - SpringBoot qui expose des webservices.
J'utilise slf4j pour logguer avec cette configuration (que j'ai simplifié) les logs dans un fichier.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/log/monfichierLog.log</file>
<encoder>
<charset>iso-8859-1</charset>
<pattern>%date{dd MM yyyy ; HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="mon.package" level="DEBUG"/>
<root level="WARN">
<appender-ref ref="FILE"/>
</root> |
Maintenant j'aimerai que sur l'appel d'un webservice particulier ses logs soit mis dans un fichier de log particulier correspondant uniquement à cet appel webservice.
Grosso modo je voudrai que :
- x appels a ce webservice crée x fichiers de log mon_webservice_x.log.
- tous les autres log continue d'aller dans mon fichier de log 'standard' définit plus haut
Je connais mal logback et j'ai beaucoup de mal à voir quoi utiliser.
J'ai essayé d'utiliser le système MDC par exemple (https://logback.qos.ch/manual/mdc.html) en ajoutant un appender MDC_APPENDER avec une variable 'nomFichier' que je sette à l'appel du webservice :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/log/monfichierLog.log</file>
<encoder>
<charset>iso-8859-1</charset>
<pattern>%date{dd MM yyyy ; HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="MDC_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>%X{nomFichier}.log</file>
<!-- Details complets sur les Pattern Layout Patterns Ã*:
http://logback.qos.ch/manual/layouts.html -->
<encoder>
<charset>iso-8859-1</charset>
<pattern>%date{dd MM yyyy ; HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="MDC_APPENDER" level="DEBUG"/>
<logger name="mon.package" level="DEBUG"/>
<root level="WARN">
<appender-ref ref="FILE"/>
<appender-ref ref="MDC_APPENDER"/>
</root> |
Code:
1 2 3 4 5 6 7
| private final Logger log = LoggerFactory.getLogger("MDC_APPENDER");
@RequestMapping(value = "monws", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public Response monWs() {
MDC.put("nomFichier", "C:\\test");
log.info("Test");
.... |
Mais il n'y a aucun fichier qui se créé, et la chaine "Test" se retrouve sur le fichier de log standard.
J'imagine que mon appel log = LoggerFactory.getLogger("MDC_APPENDER") ne fait pas ce que je veux.
Quelqu'un peut m'aider ?
Merci !