Logback I want Файл не создается, когда appender никогда не используется. [RollingFileAppender] - PullRequest
1 голос
/ 22 января 2020

Я создаю общий конфигурационный файл logback для моего приложения. В нем я определяю RollingFileAppender, который для всех моих приложений генерирует один и тот же формат журнала в файле (если он нам нужен). Иногда я хочу использовать этот appender, а иногда нет (когда мы тестируем, например).

Таким образом, мы настраиваем нашу спецификацию c logback- {профиль}. xml в зависимости от того, что мы хотим. Но когда мы не используем приложение FILE, файл создается, и мне бы этого не хотелось.

У меня есть:

  • logback-common. xml >> со всеми приложениями определение (FILE и COMMON) appli_one
  • resources / logback. xml >> вызов logback-common и config / logback- {профиль}. xml
  • resources / config / logback- {профиль}. xml >> конкретная c конфигурация приложения / профиля обратного входа.

Для настройки мы можем сделать это в logback- {профиль}. xml

    <root level="WARN">
    <appender-ref ref="FILE"/> <!-- For File Log when we need it -->
    <appender-ref ref="CONSOLE"/>
    </root>


    <root level="WARN">
    <!-- <appender-ref ref="FILE"/> --> <!-- in comment when we do not need if > BUT create a empty file -->
    <appender-ref ref="CONSOLE"/>
    </root>

logback-common. xml

    <included>
    <!-- The FILE and ASYNC appenders are here as examples for a production
        configuration -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>log/${spring.application.name}.log</file>
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>
                log/${spring.application.name}.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <maxHistory>90</maxHistory>
            <maxFileSize>10MB</maxFileSize>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
        </encoder>
    </appender>


    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>"%d{yyyy-MM-dd} [%thread] %-5level %45logger{45} - %msg%n"</pattern>
        </encoder>
    </appender>

    </included>

logback. xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true" packagingData="true">

        <property name="spring_profiles_active" value="${spring.profiles.active}" />

        <property resource="application.properties"/>

        <include resource="config/log/logback-common.xml"/>
        <include resource="config/log/logback-${spring_profiles_active}.xml"/>
    </configuration>

1 Ответ

0 голосов
/ 22 января 2020

Не является основной функцией logback, но есть обходные пути для ленивой инициализации файла.

Подробнее здесь Logback - не создавать пустые файлы журнала при запуске

...