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 XML : Sélectionner tout - Visualiser dans une fenêtre à part
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 XML : Sélectionner tout - Visualiser dans une fenêtre à part
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>Mais il n'y a aucun fichier qui se créé, et la chaine "Test" se retrouve sur le fichier de log standard.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); ....
J'imagine que mon appel log = LoggerFactory.getLogger("MDC_APPENDER") ne fait pas ce que je veux.
Quelqu'un peut m'aider ?
Merci !
Partager