2012-05-24 2 views
0

У меня есть проект a-conf с src/main/resources/logback/conf/a/CommonAppenders.xml файла:Logback включают фрагмент в OSGi контейнер

<included> 
    <appender name="FILE" class="FileAppender" /> 
</included> 

Также у меня есть еще один проект a-runable с logback.xml конфигурации, который импортирует CommonAppenders.xml:

<configuration> 
    <!-- this is classpath import --> 
    <include resource="logback/conf/a/CommonAppenders.xml" /> 
    ... 
</configuration> 

Я могу компилировать a-runable в автономная банка со всеми зависимостями (a-conf - одна из них) включена или как пакет OSGi. Когда я запускаю автономное приложение, все в порядке - файлы журнала отображаются как указано в CommonAppenders.xml. Но когда я запускаю контейнер OSGi, файлы журналов не создаются. Я думаю, что logback просто не может включать ресурс из classpath, потому что каждый пакет в контейнере OSGi имеет свои собственные загрузчики классов (для включения файла logback использует ClassLoader.getResource()).

Я проверил Export-Package: logback.conf.a в a-conf.jar/META-INF/MANIFEST.MF (это делается подключаемым модулем maven bundlor) - это нормально. Добавлено Import-Package: logback.conf.a до a-runable без эффекта.

У меня нет идей, что я могу сделать (нет кода для изменения, просто конфигурации). Любая помощь приветствуется.

P.S. Я нашел аналогичную проблему here, но logback.xml уже находится в пути к классам, и его собственные приложения прекрасно работают. Также у меня нет никаких FileNotFoundException s в существующих журналах.

ответ

1

По умолчанию, я считаю, что ошибки запуска Logback просто отбрасываются, если вы не настроите прослушиватель (но я, возможно, помню неправильно). Ключ скорее всего, что a-conf должен быть фрагментом пакета, который содержит logback.jar. Это то, что я сделал для моего пакета, у которого есть некоторые доморощенные приставки.

Если вы хотите увидеть установку, где Logback предварительно настроен для вывода его ошибки запуска в контейнер OSGi, посмотрите на Pax-Logger 1.7 - https://github.com/ops4j/org.ops4j.pax.logging/tree/master/pax-logging-logback

+0

Спасибо большое! Создание a-conf действительно помогло фрагменту a-runnable! – madhead

Смежные вопросы