Как зарегистрировать пользовательские фильтры обратного вызова, используя фрагментный фрагмент 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, это можно сделать?
1 ответ
Поскольку Регистратор инициализируется LoggerContext
и Logback использует загрузчик классов Context
класс, который вы, вероятно, должны сделать Fragment-Host
как ch.qos.logback.classic
который содержит LoggerContext
учебный класс