Вы можете включить ведение журнала консоли браузера с помощью основных средств ведения журнала платформы 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) вызывает WebPageClientImpl # setConsoleListener (WebConsoleListener) .
WebPageClientImpl # setConsoleListener (WebConsoleListener) сохраняет прослушиватель в своем статическом поле consoleListener .
consoleListener взаимодействует только с WebPageClientImpl # addMessageToConsole (String, int, String) .
WebPageClientImpl # addMessageToConsole (String, int, String) переопределяет WebPageClient # addMessageToConsole (String, int, String) .
WebPageClient # addMessageToConsole (String, int, String) is вызывается WebPage # 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 .