Свойства 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>
,