我有一个名为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
捆绑为Fragment Bundle,
Export-Package: foo.bar.*
Fragment-Host: ch.qos.logback.core
我仍然得到相同的ClassNotFoundException
。
我知道片段会从宿主包中共享类加载器。因此,Logback应该能够实例化MatcherFilter
。如果我错了,请纠正我。
使用OSGi片段包注册自定义过滤器,可以这样做吗?
答案 0 :(得分:2)
当记录器由LoggerContext
初始化而Logback使用classloader of the Context
class时,您可能需要将Fragment-Host
设为ch.qos.logback.classic
,其中包含LoggerContext
类