如何将日志记录添加到现有的 Eclipse 插件中以在 2019-12 中工作?



我正在尝试在 https://github.com/davidmichaelkarr/e4macs 修复 Eclipse 插件中的问题。 存储库是原始应用程序的分支,现在已放弃软件。

我对此有几个问题,但我要限制问题的范围,希望能让某人更容易提供答案。

我在使用插件时遇到的主要问题是某些操作(特别是"垂直拆分窗口"操作(在我执行它们时什么都不做。 过去不是这样。 在Eclipse的一些最新版本中,这工作正常。 它在 2019-09 年左右停止工作。

我首先要做的是添加日志语句,显示它至少到达了处理程序方法。 我得出的结论是,我不知道如何将日志记录添加到 Eclipse 插件中。 插件的现有代码不执行任何日志记录,因此我没有示例可参考。 我已经在网上搜索了有关如何执行此操作的文档,但是我找到的所有文章要么不完整,要么不起作用。

我知道至少有一个处理程序工作正常。 我将我认为正确的日志记录代码添加到该处理程序中,但它从未出现在".metadata/.log"文件中,因此我认为这不是执行日志记录的正确方法。

我看到了使用"Activator.getDefault(("的引用,但该帖子没有说明FQCN是什么,而且我找到的所有完成产品都没有"getDefault(("方法。

更新

我在两个类中添加了类似以下内容的内容:

private ILog   logger  = Platform.getLog(<ContainingClass>.class);

然后在每个类的方法中,我使用了logger.info("message");

我在调试实例中运行了它,并测试了两个类中的操作。 此时将显示日志消息。

然后,我从主安装中卸载了插件,然后在我的 RPC 实例中构建了插件,然后在主安装中重新安装了该插件,从"...更新"项目。

然后我测试了这两个操作,日志中没有看到任何内容。

此时我可能已经解决了我的日志记录问题,但我在部署方面仍然遇到某种问题。 我有一种感觉,我重新安装更改的插件所经历的过程不起作用。

若要获取具有getDefault()方法的激活器,必须在创建插件时指定插件对 UI 的贡献,并且希望创建激活器。这应该创建一个扩展AbstractUIPlugin并使用getDefault()静态方法的激活器类。

在任何插件中,您始终可以使用:

IStatus status = new Status(....);
ILog log = Platform.getLog(getClass());
log.log(status);

以记录状态对象。

Status有许多构造函数。记录消息的简单方法是:

new Status(IStatus.INFO, "plugin id", "message");

Platformorg.eclipse.core.runtime.Platform

Statusorg.eclipse.core.runtime.Status

最新更新