Как заставить logback (библиотеку журналов) работать с ServiceMix (логирование Karaf + ops4j) - PullRequest
3 голосов
/ 21 марта 2012

Я пытаюсь заставить logback работать с ServiceMix 4.3.0 (karaf 2.1.3), но безуспешно. Кто-нибудь уже успешно заставил это работать? (с любой версией serviceMix + slf4j + logback)

Вот моя ситуация. Я могу заставить (Logback + slf4j + мое приложение) работать вместе в Tomcat. Теперь я хотел бы заставить их работать вместе в ServiceMix. ServiceMix использует OPS4J (org.ops4j.pax.logging) для предоставления slf4j (1.5.11). Итак, я должен использовать slf4j, предоставляемый ServiceMix (мне не нужно устанавливать новый пакет slf4j), затем я установил основной модуль Logback (0.9.20), классический модуль Logback (0.9.20), jcl-over-slf4j (1.5 .11) для того, чтобы slf4j и logback работали вместе. Установка прошла нормально, ошибок нет. В моем приложении у меня есть фрагмент кода для чтения logback.xml из внешней папки.

fis = new FileInputStream(System.getProperty("logconf") + "/logback.xml");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
lc.reset();
configurator.doConfigure(fis);

но всякий раз, когда я запускаю этот код, я всегда получаю эту ошибку:

java.lang.ClassCastException: org.ops4j.pax.logging.slf4j.Slf4jLoggerFactory не может быть приведен к ch.qos.logback.classic.LoggerContext .

Следовательно, я думаю, что slf4j, предоставляемый ServiceMix, не работает с библиотекой logback.

Ответы [ 2 ]

3 голосов
/ 10 апреля 2012

Еще не выпущенный Pax-Logging 1.7 поддерживает Logback. Смотри https://github.com/ops4j/org.ops4j.pax.logging

То, что вы пытаетесь сделать, никогда не будет работать с Pax-Logging, потому что Pax преднамеренно оборачивает фабрику логгеров, чтобы обеспечить возможность внедрения провайдера логирования во время выполнения. Вместо этого, если вы используете Pax-Logging 1.7 (когда-нибудь), вы будете выполнять настройку обратного входа через файл org.ops4j.pax.logging.cfg, который указывает на ваш logback.xml.

0 голосов
/ 23 сентября 2015

Я получил аналогичную ошибку и позже заметил, что мне нужно переориентировать мой импорт в моем комплекте osgi. slf4j был импортирован после входа в систему, что вызывает эту ошибку. Когда я удалил это исключение исчезло.

...