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>