logstash-logback-encoder ошибка с использованием маркеров

Я получаю java.lang.IncompatibleClassChangeError при использовании slf4j.Marker. Кажется, у меня есть несколько версий slf4j в classpath. Но при выполнении зависимостей maven: дерево говорит, что есть только slf4j 1.7.25. Ребята, у вас есть идеи, в чем может быть проблема? Зависимости следующие:

  • выход 1.2.3
  • slf4j 1.7.25
  • logstash-logback-encoder 5.0

Приложение развернуто на WildFlly 8.2.1 AS.

> -ERROR in net.logstash.logback.appender.LogstashTcpSocketAppender[stash] - Unable to process event: Class net.logstash.logback.marker.ObjectAppendingMarker does not implement the requested interface org.slf4j.Marker java.lang.IncompatibleClassChangeError: Class net.logstash.logback.marker.ObjectAppendingMarker does not implement the requested interface org.slf4j.Marker
> 
> 2018-03-31 00:17:03,287 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at java.lang.IncompatibleClassChangeError: Class net.logstash.logback.marker.ObjectAppendingMarker does not implement the requested interface org.slf4j.Marker
> 
> 2018-03-31 00:17:03,287 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.composite.loggingevent.JsonMessageJsonProvider.writeTo(JsonMessageJsonProvider.java:52)
> 
> 2018-03-31 00:17:03,287 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.composite.loggingevent.JsonMessageJsonProvider.writeTo(JsonMessageJsonProvider.java:31)
> 
> 2018-03-31 00:17:03,287 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.composite.JsonProviders.writeTo(JsonProviders.java:77)
> 
> 2018-03-31 00:17:03,287 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.composite.CompositeJsonFormatter.writeEventToGenerator(CompositeJsonFormatter.java:175)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.composite.CompositeJsonFormatter.writeEventToOutputStream(CompositeJsonFormatter.java:152)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.encoder.CompositeJsonEncoder.encode(CompositeJsonEncoder.java:114)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.encoder.CompositeJsonEncoder.encode(CompositeJsonEncoder.java:32)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.onEvent(AbstractLogstashTcpSocketAppender.java:454)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.onEvent(AbstractLogstashTcpSocketAppender.java:264)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.appender.AsyncDisruptorAppender$EventClearingEventHandler.onEvent(AsyncDisruptorAppender.java:330)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2)  at  at net.logstash.logback.appender.AsyncDisruptorAppender$EventClearingEventHandler.onEvent(AsyncDisruptorAppender.java:318)
> 
> 2018-03-31 00:17:03,288 INFO  [stdout] (logback-appender-stash-127.0.0.1:4560-2) 

1 ответ

Решение

Ну, вы правы, эта проблема возникает из-за нескольких версий slf4j в classpath

Теперь нам нужно выяснить, как это произошло

Случай 1:

Когда я смотрю в репозиторий Maven для logback 1.2.3 Я вижу, что это уже имеет зависимость от slf4j.

Поэтому, когда вы загружаете logback 1.2.3, slf4j будет добавлен автоматически

Так что вам не нужно добавлять дополнительные slf4j в pom, если вы делаете это, пожалуйста, удалите его.

Ссылка для более подробной информации - Зависимости компиляции:

Случай 2:

Заглянуть в wildfly/modules/system/layers/base/org/slf4j

Посмотрите, есть ли в нем файлы jar slf4j. Если так, то вам нужно только slf4j при компиляции

добавлять <scope>compile</scope>

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