如何将日志记录添加到现有的 Eclipse 插件以在 2019-12 中工作?
How to add logging to an existing Eclipse plugin to work in 2019-12?
我正在尝试解决 https://github.com/davidmichaelkarr/e4macs 的 Eclipse 插件中的问题。回购是原始应用程序的一个分支,现在是废弃软件。
我对此有一些疑问,但我会限制问题的范围,希望能让别人更简单地提供答案。
我在使用该插件时遇到的主要问题是某些操作(尤其是 "split-window-vertically" 操作)在我执行它们时什么都不做。过去不是这样的。在一些最新版本的 Eclipse 中,这工作正常。它在 2019-09 左右停止工作。
我首先要做的是添加日志语句,表明它至少进入了处理程序方法。我得出结论,我不知道如何将日志记录添加到 Eclipse 插件。该插件的现有代码不执行任何日志记录,因此我没有示例可供参考。我在网上搜索了有关如何执行此操作的文档,但我发现的所有文章要么不完整,要么根本不起作用。
我知道至少有一个处理程序可以正常工作。我向该处理程序添加了我认为正确的日志记录代码,但它从未出现在“.metadata/.log”文件中,因此我认为这不是进行日志记录的正确方法。
我看到了使用 "Activator.getDefault()" 的参考,但该帖子没有说明 FQCN 是什么,而且我发现的所有完成产品都没有 "getDefault()" 方法。
更新:
我在两个 类:
中添加了如下内容
private ILog logger = Platform.getLog(<ContainingClass>.class);
然后在每个 类 的方法中,我使用了 logger.info("message");
我在我的调试实例中 运行 并测试了两个 类 中的操作。出现日志消息。
然后我从主安装中卸载了插件,然后在我的 RPC 实例中构建了插件,然后在主安装中从“...更新”项目定义的本地更新站点重新安装了插件。
然后我测试了这两个操作,我在日志中没有看到任何东西。
此时我可能已经解决了我的日志记录问题,但我仍然遇到一些部署问题。我感觉我重新安装更改后的插件的过程不起作用。
要使用 getDefault()
方法获取激活器,您必须在创建插件时指定该插件对 UI 有贡献,并且您希望创建激活器。这应该创建一个激活器 class 扩展 AbstractUIPlugin
并使用 getDefault()
静态方法。
在您可以随时使用的任何插件中:
IStatus status = new Status(....);
ILog log = Platform.getLog(getClass());
log.log(status);
记录状态对象。
Status
有许多构造函数。一个简单的记录消息的方法是:
new Status(IStatus.INFO, "plugin id", "message");
Platform
是 org.eclipse.core.runtime.Platform
Status
是 org.eclipse.core.runtime.Status
我正在尝试解决 https://github.com/davidmichaelkarr/e4macs 的 Eclipse 插件中的问题。回购是原始应用程序的一个分支,现在是废弃软件。
我对此有一些疑问,但我会限制问题的范围,希望能让别人更简单地提供答案。
我在使用该插件时遇到的主要问题是某些操作(尤其是 "split-window-vertically" 操作)在我执行它们时什么都不做。过去不是这样的。在一些最新版本的 Eclipse 中,这工作正常。它在 2019-09 左右停止工作。
我首先要做的是添加日志语句,表明它至少进入了处理程序方法。我得出结论,我不知道如何将日志记录添加到 Eclipse 插件。该插件的现有代码不执行任何日志记录,因此我没有示例可供参考。我在网上搜索了有关如何执行此操作的文档,但我发现的所有文章要么不完整,要么根本不起作用。
我知道至少有一个处理程序可以正常工作。我向该处理程序添加了我认为正确的日志记录代码,但它从未出现在“.metadata/.log”文件中,因此我认为这不是进行日志记录的正确方法。
我看到了使用 "Activator.getDefault()" 的参考,但该帖子没有说明 FQCN 是什么,而且我发现的所有完成产品都没有 "getDefault()" 方法。
更新:
我在两个 类:
中添加了如下内容private ILog logger = Platform.getLog(<ContainingClass>.class);
然后在每个 类 的方法中,我使用了 logger.info("message");
我在我的调试实例中 运行 并测试了两个 类 中的操作。出现日志消息。
然后我从主安装中卸载了插件,然后在我的 RPC 实例中构建了插件,然后在主安装中从“...更新”项目定义的本地更新站点重新安装了插件。
然后我测试了这两个操作,我在日志中没有看到任何东西。
此时我可能已经解决了我的日志记录问题,但我仍然遇到一些部署问题。我感觉我重新安装更改后的插件的过程不起作用。
要使用 getDefault()
方法获取激活器,您必须在创建插件时指定该插件对 UI 有贡献,并且您希望创建激活器。这应该创建一个激活器 class 扩展 AbstractUIPlugin
并使用 getDefault()
静态方法。
在您可以随时使用的任何插件中:
IStatus status = new Status(....);
ILog log = Platform.getLog(getClass());
log.log(status);
记录状态对象。
Status
有许多构造函数。一个简单的记录消息的方法是:
new Status(IStatus.INFO, "plugin id", "message");
Platform
是 org.eclipse.core.runtime.Platform
Status
是 org.eclipse.core.runtime.Status