web-dev-qa-db-fra.com

Le fichier logback.xml permet-il de spécifier la destination du journal de fichiers via classpath :, sans chemin absolu?

J'ai dans mon fichier de configuration logback.xml cet appender:

<appender name="FILE"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>classpath:addressbookLog.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>%d{dd MMM yyyy;HH:mm:ss} %-5level %logger{36} - %msg%n
      </Pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <FileNamePattern>classpath:addressbookLog.%i.log.Zip</FileNamePattern>
      <MinIndex>1</MinIndex>
      <MaxIndex>10</MaxIndex>
    </rollingPolicy>

    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <MaxFileSize>2MB</MaxFileSize>
    </triggeringPolicy>
  </appender>

de sorte que je spécifie le chemin du fichier dans lequel imprimer les journaux de manière relative via classpath, mais cela ne fonctionne pas, aucun fichier addressbookLog.log n'est créé et écrit . Il ne fonctionne qu'avec des chemins absolus comme/home/andrea /.../resources/addressbookLog.logVous avez des idées sur la façon de le faire fonctionner avec classpath?

19
andPat

Le Chapitre 3: Configuration du journal: substitution de variable nous explique les différentes manières de faire référence à la variable définie à l'extérieur, par exemple system properties et classpath.

La configuration significative crée un fichier séparé qui contiendra toutes les variables. Nous pouvons également faire référence à une ressource sur le chemin de classe au lieu d’un fichier. par exemple.

Le logback.xml

<configuration>

  <property resource="resource1.properties" />

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <!-- Here we can refer to the variable 
      defined at the resource1.properties -->
     <file>${USER_HOME}/myApp.log</file>
     <encoder>
       <pattern>%msg%n</pattern>
     </encoder>
   </appender>

   <root level="debug">
     <appender-ref ref="FILE" />
   </root>
</configuration>

Le fichier de propriétés externe (resource1.properties)

USER_HOME=/path/to/somewhere

Veuillez noter que le resource1.properties est une ressource disponible à la classpath.

Vous pouvez vous référer à la version complète sous Chapitre 3: Configuration du journal: Substitution de variable . J'espère que cela peut aider.

21
Charlee Chitsuk

<FileNamePattern>${user.dir}/logs/addressbookLog.%i.log.Zip</FileNamePattern>

0
ratelgogo