Spring Webflux Stacktrace (Spring Boot 2.1.x -> 2.2.x) Проблема - PullRequest
1 голос
/ 31 октября 2019

Я только что обновил наш проект Spring Boot с версии 2.1.1.RELEASE до версии 2.2.0.RELEASE и обнаружил критическое изменение в выводе стековой трассировки.

Мне интересно, намеренно ли это отличается илиесли я пропустил критическую точку.

Фон

Допустим, у меня есть WebFilter, отвечающий за регистрацию http-запроса (и его потенциальное исключение)

object RequestLogger : WebFilter {

    override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {

        logRequest(exchange)

        return chain.filter(exchange)
            .doFinally { logResponse(exchange) }
            .doOnError { logError(exchange, it) }
    }

   // ...

   private fun logError(exchange: ServerWebExchange, t: Throwable) {
        // t.stacktrace <------- stracktrace outpout taken from this !!!
   }
}

Допустим, в нашей доменной модели выдается исключение. Тогда есть заметная разница в выводе стека трассировки между Spring Boot 2.2.x (последняя версия) и 2.1.x (предыдущая ветвь)

Ошибка стека трассировки начиная с 2.2.0

Содержит только две строки:
- FQN класса исключения и сообщения
- вхождение строки исключения

package.path.to.MyDomainException: The Exception Message.
package.path.to.EnsurerKt$ensure$1.invoke(Ensurer.kt:45)

Stacktrace ошибок в 2.1.0 и до

Содержит всю трассировку стека, примерно от 50 до 100 строк.

package.path.to.MyDomainException: The Exception Message.
package.path.to.EnsurerKt$ensure$1.invoke(Ensurer.kt:45)
  more lines ...
reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:107)
  more lines ...
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
  more lines ...
java.base/java.lang.Thread.run(Thread.java:844)

Вопрос

Как я могу снова получить полный выход стека трассировки в Spring Boot 2.2.0?

...