Свойства BuferredIO и ImmediateFlush в конфигурации Logback

Я переносу устаревшее приложение в Spring Boot и столкнулся со следующей проблемой: при запуске приложения происходит сбой из-за следующего исключения:

Исключение в потоке "main" java.lang.IllegalStateException: обнаружена ошибка конфигурации обратного входа: ОШИБКА в ch.qos.logback.core.joran.spi.Interpreter@10:21 - для [BufferedIO] не применимо никакого действия, текущий ElementPath равен [[ конфигурация][Appender][BufferedIO]]
ОШИБКА в ch.qos.logback.core.joran.spi.Interpreter@11:25 - для [ImmediateFlush] нет применимых действий, текущим ElementPath является [[конфигурация][appender][ImmediateFlush]]
по адресу org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:161) по адресу org.springframework.boot.logging.logback.LogbackLoggingSystem.reinitialize(LogbackLoggingSystem.jrag.spring.prog.bog.service.prog.7.AbstractLoggingSystem..onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:235) в org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(ведение журнала ApplicationListener.java:208) в org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) в org.springframework.context.event. Простое применение..event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122) в org.springframework.boot.context.event.) в org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:338) в org.springframework.boot.SpringApplication.run(SpringApplication.java:309) в org.springframework.boot.SpringApplication.un 1187) на org.springframework.boot.SpringApplication.run(SpringApplication.java:1176) на com.some_company.SomeApp.main(SomeApp.java:28)

Поэтому Logback не может разрешать свойства BuferredIO и ImmediateFlush. Я пытался просмотреть их документы, но они устарели, поскольку говорят, что такие свойства существуют + я нашел, например, для OutputStreamAppender что у него нет immediateFlush собственность в то время как в соответствии с документами, это должно.

Я не могу найти никакой информации, если Logback все еще поддерживает следующие свойства. Не могли бы вы помочь и предложить некоторые идеи о том, как я могу достичь того же результата, что и с свойствами ранее? Может быть, они где-то еще:)

Большое спасибо!:)

ОБНОВЛЕНИЕ: Добавление снимка конфигурации Logback:

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${logdir}/some-app.log</File>
        <Append>true</Append>        
        <BufferedIO>false</BufferedIO>
        <ImmediateFlush>true</ImmediateFlush>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>${logdir}/archive-some-app.%i.log.zip</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>

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

        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <fieldNames>
                <timestamp>timestamp</timestamp>
            </fieldNames>
        </encoder>
    </appender>

Версия Logback 1.1.7 (ранее была до миграции)

1 ответ

Решение

Хотя ImmediateFlush является допустимым свойством конфигурации для OutputStreamAppender (который RollingFileAppender расширяется) в последней версии Logback (и, следовательно, упоминается в последних документах), это было только добавлено к OutputStreamAppender здесь в феврале 2017 года. Итак, immediateFlush не является действительным свойством OutputStreamAppender (и, следовательно, недоступен из RollingFileAppender) в v1.1.7

Это объясняет следующую ошибку:

не применимо действие для [ImmediateFlush], текущим ElementPath является [[configuration][appender][ImmediateFlush]]

BufferedIO это старое свойство конфигурации, которое больше не поддерживается Logback.

Это объясняет следующую ошибку:

для [BufferedIO] нет применимых действий, текущим ElementPath является [[configuration][appender][BufferedIO]]

Таким образом, вы можете рассмотреть возможность обновления до последней версии Logback и просто удалить <BufferedIO>false</BufferedIO>, Или продолжайте использовать v1.1.7 и удалите оба из них: <BufferedIO>false</BufferedIO> а также <ImmediateFlush>true</ImmediateFlush>,

Другие вопросы по тегам