it-swarm.com.de

Gibt es eine Möglichkeit in logback.xml, das Protokollprotokollziel über classpath: ohne absoluten Pfad anzugeben?

Ich habe in meiner Konfigurationsdatei logback.xml diesen 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>

damit ich den Pfad zu der Datei angeben kann, in der die Protokolle über Klassenpfad relativ gedruckt werden sollen, dies jedoch nicht funktioniert, wird keine Datei addressbookLog.log erstellt und geschrieben. Sie arbeitet nur mit absoluten Pfaden wie/home/andrea /.../resources/addressbookLog.logHaben Sie Ideen, wie Sie es mit classpath funktionieren lassen können?

19
andPat

Das Kapitel 3: Logback-Konfiguration: Variablensubstitution hat uns die verschiedenen Möglichkeiten gezeigt, auf die außerhalb definierte Variable zu verweisen, z. system properties und classpath.

Die wichtige Konfiguration erstellt eine separate Datei, die alle Variablen enthält. Wir können statt einer Datei auch auf eine Ressource im Klassenpfad verweisen. z.B.

Die 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>

Die externe Eigenschaftendatei (resource1.properties)

USER_HOME=/path/to/somewhere

Bitte beachten Sie, dass der resource1.properties eine Ressource ist, die unter der classpath verfügbar ist.

Sie können sich auf die Vollversion beziehen unter Kapitel 3: Logback-Konfiguration: Variablenersetzung . Ich hoffe das kann helfen.

21
Charlee Chitsuk

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

0
ratelgogo