Как зарегистрировать настраиваемые фильтры Logback с помощью пакета фрагментов OSGi?

У меня есть собственный фильтр под названием foo.bar.MatcherFilter.

У меня он объявлен в logback.xml,

<appender ....>
  <filter class="foo.bar.MatcherFilter">
    <contains>java.net.ConnectException: Connection refused</contains>
  </filter>
</appender>

Сначала, когда MatcherFilter входит в комплект моего приложения, Logback будет сообщать ClassNotFoundException.

Итак, я объединил foo.bar.MatcherFilter в пакет фрагментов,

Export-Package: foo.bar.*
Fragment-Host: ch.qos.logback.core

Тем не менее я получаю то же самое ClassNotFoundException.

Я понимаю, что фрагменты будут использовать загрузчик классов из пакета хоста. Таким образом, Logback должен иметь возможность создавать экземпляр MatcherFilter. Поправьте меня, если я ошибаюсь.

Можно ли зарегистрировать собственный фильтр с помощью пакета фрагментов OSGi?


person Augustus Thoo    schedule 18.10.2013    source источник


Ответы (1)


Поскольку Logger инициализируется LoggerContext, а Logback использует загрузчик классов Context класса вам, вероятно, потребуется сделать Fragment-Host как ch.qos.logback.classic, который содержит класс LoggerContext

person Chetan    schedule 19.10.2013