У меня есть проект 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 в существующих журналах.
Спасибо большое! Создание a-conf действительно помогло фрагменту a-runnable! – madhead