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



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

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

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

这感觉就像一个应该已经存在的选项。似乎应该有一个选项来自动记录插件的捆绑状态更改。但是在网上和书籍中快速搜索后,我还没有找到任何东西。我错过了一些明显的东西吗?

OSGi 已将捆绑包状态更改记录到日志服务中。请参考OSGi纲要规范的第101章。

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

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

最新更新