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

How to log starting of Eclipse plug-ins / OSGi bundles?

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

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

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

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

如果您想使用标准日志服务以外的一些特定机制来记录捆绑启动事件,那么您可以编写 BundleListener。诀窍是让您的监听器足够早地注册,这样您就可以捕捉到所有其他正在启动的捆绑包(显然,如果包含监听器的捆绑包是最后启动的,那么它将无法看到这些事件)。

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