Есть ли способ в logback.xml для указания назначения журнала файлов через classpath:, без абсолютного пути?

У меня в моем logback.файл конфигурации xml это приложение:

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

Так что я указываю путь к файлу, в котором печатать журналы относительным образом через classpath, но он не работает, нет файла addressbookLog.журнал создается и записывается. Он работает только с абсолютными путями, такими как/home/andrea/.../ resources / addressbookLog.бревно У вас есть идеи, как заставить его работать с classpath?

2 ответов


на Глава 3: конфигурация Logback: подстановка переменных сказал нам различные способы ссылаться на переменную, определенную снаружи, например system properties и classpath.

значительные конфигурации создает отдельный файл, который будет содержать все переменные. Мы также можем сделать ссылку на ресурс в пути к классу вместо файла. например,

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

файл внешних свойств (ресурс1.свойства)

USER_HOME=/path/to/somewhere

обратите внимание:resource1.properties является ресурсом, который доступен в classpath.

вы можете обратиться к полной версии Глава 3: конфигурация Logback: подстановка переменных. Надеюсь, это поможет.


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