Подтвердить что ты не робот

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

У меня в файле конфигурации logback.xml этот 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>

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

4b9b3361

Ответ 1

Глава 3: Конфигурация журнала: замена переменных рассказала нам различные способы ссылки на переменную, определенную снаружи, например. 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>

Файл внешних свойств (resource1.properties)

USER_HOME=/path/to/somewhere

Обратите внимание, что resource1.properties - это ресурс, доступный в classpath.

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

Ответ 2

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