据我阅读在线文章的了解,Eclipse 中的嵌入式数据记录器应该是最好的选择,特别是如果您正在实现 RCP 应用程序。 (确认?)
无论如何,我正在努力使用它。
我遇到的第一个问题是注入问题:
import org.eclipse.e4.core.services.Logger;
@Inject
private Logger logger;
在 MPart 中,它会生成一个空变量。
当我尝试在 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 描述
中提到的唯一方法