Как заставить logback (библиотеку протоколирования) работать с ServiceMix (логирование Karaf + ops4j)

Я пытаюсь заставить 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, не работает с библиотекой журналов.


person David    schedule 20.03.2012    source источник


Ответы (2)


Еще не выпущенная 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.

person Chris Dolan    schedule 10.04.2012
comment
Обновление: Pax-Logging 1.7.0 был выпущен на прошлой неделе - person Chris Dolan; 04.10.2012
comment
Похоже, вики просто устарела. Попробуйте следующее: search.maven.org/#search=pax-logging - person Chris Dolan; 10.10.2012
comment
Здорово. Но знаете ли вы документ, как его использовать. как заставить его понять logback.xml - person David; 10.10.2012
comment
Создайте файл etc/org.ops4j.pax.logging.cfg с таким содержимым: org.ops4j.pax.logging.logback.config.file=${karaf.base}/etc/logback.xml - person Chris Dolan; 11.10.2012
comment
Пробовал настроить и запустить, не получилось. Кто-нибудь понял. Мой вопрос stackoverflow.com/questions/24529660/ - person Srikanth Hugar; 02.07.2014

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

person Olcay Tarazan    schedule 23.09.2015