Несовместимость инфраструктуры ведения журнала.

Я создаю небольшое приложение на Java и надеюсь использовать logback для ведения журнала.

Мое приложение зависит от более старого проекта, который выполняет запись через

org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1

... поэтому я планировал использовать

org.slf4j | jcl-over-slf4j | 1.5.6

... для перенаправления журналирования JCL на

org.slf4j | slf4j-api | 1.6.0

... и, в конечном итоге, на

ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22

, чтобы мое приложение могло входить через logback через API-интерфейс slf4j, в то время как старая библиотека Код может войти в то же место с помощью перенаправления.

Увы, это приводит к

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at   org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)

, я пробовал более высокие и более низкие номера версий на некоторых из этих jar-файлов, а также копался в документации API и подобных ... но я ' Я не могу найти и решить проблему.

Помощь, пожалуйста?

Хотя logback считается «стратегической» структурой журналирования, у меня есть некоторая свобода в том, какой механизм журналирования я в конечном итоге использую. Тем не менее, я надеюсь использовать logback или log4j, и я определенно хочу объединить ведение журнала старого проекта с любой «новой» средой ведения журнала с помощью общей конфигурации.

109
задан linuxbuild 16 April 2011 в 17:57
поделиться

1 ответ

Вы смешиваете версию моста jcl 1.5.6 с версией 1.6.0 slf4j-api; это не сработает из-за нескольких изменений в 1.6.0. Используйте для обоих одинаковые версии, например 1.6.1 (самую последнюю). Я постоянно использую мост jcl-over-slf4j, и он отлично работает.

111
ответ дан 24 November 2019 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: