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>
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");
            ....
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 !