如何记录Eclipse插件/ OSGi包的启动?

时间:2015-04-27 16:44:54

标签: eclipse eclipse-plugin osgi eclipse-rcp osgi-bundle

在Eclipse RCP应用程序中,如何在启动时自动记录每个插件?

我知道这些,但我正在寻找更类似于Java的-verbose:class

  • OSGi控制台能够查询当前的插件集。
  • 在每个插件的激活器中手动编码日志记录调用。

这感觉就像一个应该存在的选项。似乎应该有一个选项来自动记录插件的bundle-state更改。但是在网上和书本上快速搜索之后我找不到任何东西。我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:3)

OSGi已将捆绑状态更改记录到日志服务。请参阅OSGi Compendium规范的第101章。

如果要使用标准日志服务以外的某些特定机制记录软件包启动事件,则可以编写BundleListener。诀窍是让你的监听器尽早注册,以便捕获所有其他正在启动的bundle(显然,如果包含监听器的bundle最后启动,那么它将无法看到这些事件)。

如果您控制顶级应用程序,那么您应该能够从OSGi启动程序注册侦听器,即使用系统包本身的BundleContext。但是启动程序通常控制启动bundle,这意味着记录bundle开始的时间是你的代码在每个代码上调用start()的时候!这完全取决于您的应用程序的结构。