您可以通过 Java™ 2 平台的核心日志记录工具启用浏览器控制台日志记录,方法是将其添加到logging.properties:
com.sun.webkit.WebPage.level = FINE
确保日志记录配置中存在 FINE 或更低级别的日志处理程序,否则日志将在记录之前被过滤。例子:
handlers = java.util.logging.ConsoleHandler
.level = INFO
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.XMLFormatter
com.sun.webkit.WebPage.level = FINE
以下是我如何得出这个结论的更深入的解释:
WebConsoleListener#setDefaultListener(WebConsoleListener) calls WebPageClientImpl#setConsoleListener(WebConsoleListener).
WebPageClientImpl#setConsoleListener(WebConsoleListener)将侦听器存储在其静态字段中控制台监听器.
控制台监听器仅与以下人员交互WebPageClientImpl#addMessageToConsole(字符串,int,字符串).
WebPageClientImpl#addMessageToConsole(字符串,int,字符串)覆盖WebPageClient#addMessageToConsole(字符串,int,字符串).
WebPageClient#addMessageToConsole(字符串,int,字符串) is 打电话给网页#fwkAddMessageToConsole(String,int,String).有在撰写本文时,代码库中没有其他调用站点.
同样的方法记录控制台信息:
log.log(Level.FINE, "fwkAddMessageToConsole(): message = " + message
+ ", lineNumber = " + lineNumber + ", sourceId = " + sourceId);
这意味着您可以通过启用来获取所需的日志记录FINE登录中com.sun.webkit.WebPage限制对日志配置的实现级别依赖:
com.sun.webkit.WebPage.level = FINE
我找不到这方面的公共 API。
根据我对 OpenJDK JFX 存储库源的审查,没有可用的公共 API。
此解决方案仍然不理想,因为它依赖于私有实现类名,但该依赖项位于配置文件中,如果实现类更改或消失,影响是日志记录丢失,而不是可能致命的 NoClassDefFoundError 或 NoSuchMethodError。