通过 Java ScriptEngineManager 为 GraalVM JS 脚本引擎添加自定义记录器

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

有一个eclipse插件(名称:A),它内部调用JS脚本引擎来评估一些条件。 插件的使用者不了解 JS 脚本实现代码,可以自由选择他们的自定义 JS 脚本实现。

我们在插件 (B) 中导入“A”插件,并且我们使用 GraalVM JS 脚本引擎。 似乎 GraalVM 使用 TruffleLogger 进行日志记录并写入控制台

我们想写入 Eclipse 错误日志。不幸的是,我找不到任何方法。

任何指针如何实现相同的效果?

无需了解用于初始化 ScriptEngine 的代码即可附加的任何自定义记录器。

有任何编程方式来设置 TruffleLogger?

ScriptEngineManager engineManager = new ScriptEngineManager();
this.scriptEngine = engineManager.getEngineByName("JS");

谢谢, 帕尔

eclipse-plugin graalvm graaljs
1个回答
0
投票

满足您要求的代码:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("polyglot.js.allowHostAccess", true);
bindings.put("polyglot.js.allowHostClassLookup", (Predicate<String>) s -> true);
bindings.put("truffleLogger", new TruffleLogger());
engine.eval("(truffleLogger instanceof Java.type('java.lang.TruffleLogger'));");
© www.soinside.com 2019 - 2024. All rights reserved.