如何使用OSGi片段包注册自定义Logback过滤器?

时间:2013-10-18 10:18:26

标签: java osgi logback osgi-fragment

我有一个名为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片段包注册自定义过滤器,可以这样做吗?

1 个答案:

答案 0 :(得分:2)

当记录器由LoggerContext初始化而Logback使用classloader of the Context class时,您可能需要将Fragment-Host设为ch.qos.logback.classic,其中包含LoggerContext