Eclipse e4 - 记录器注入

问题描述 投票:0回答:1

据我阅读在线文章的了解,Eclipse 中的嵌入式数据记录器应该是最好的选择,特别是如果您正在实现 RCP 应用程序。 (确认?)

无论如何,我正在努力使用它。

我遇到的第一个问题是注入问题:

import org.eclipse.e4.core.services.Logger;

@Inject
private Logger logger;

在 MPart 中,它会生成一个空变量。

java eclipse rcp code-injection e4
1个回答
0
投票

当我尝试在 e4 插件的处理程序中使用 Logger 并在 Eclipse 版本:2023-12 (4.30.0) 中启动插件时,我遇到了类似的问题。

依赖注入此时无法解析记录器。

作为解决方法,我确实注入了 Eclipse 上下文并从那里解析了记录器:


import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.services.log.Logger;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.swt.widgets.Shell;

public class SomeHandler {

    @Inject
    IEclipseContext context;

    @Execute
    public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell s) {

        Logger logger = context.get(Logger.class);
        logger.info("Info log entry - visible in Error log view");

        // further stuff
    }

但有一些注意事项:

  • org.eclipse.e4.core.services.log.Logger
    限制 API 访问
  • 使用解决方法时,日志中的插件始终是
    org.eclipse.e4.ui.workbench
    而不是您自己的(意味着不像激活器记录器 - 这是 e3 访问记录器的方式)

目前我没有找到更好/更快的方法。 这是(现已过时)wiki 描述

中提到的唯一方法
© www.soinside.com 2019 - 2024. All rights reserved.