Я отлаживаю приложение GWT, и мне нужно распечатать некоторые данные на консоли в целях тестирования. System.out.printlnи GWT.logне работай. У кого-нибудь есть идеи?
Добавить журнал GWT действительно очень просто, как в следующем примере кода. Однако понимание того, как работает ведение журнала и как его правильно настроить, важно, поэтому, пожалуйста, найдите время, чтобы прочитать остальную часть этого документа.
# In your .gwt.xml file
<inherits name="com.google.gwt.logging.Logging"/>
# In your .java file
Logger logger = java.util.logging.Logger.getLogger("NameOfYourLogger");
logger.log(Level.SEVERE, "this message should get logged");
Я думаю, что комментарий о том, что GWT.log не работает, является причиной вашего отказа.
checketts
11
Да, GWT.log работает только в DevMode, поэтому, если вы компилируете свой код с помощью компилятора GWT, вы никогда не увидите никаких выходных данных из GWT.log ().
Эндрю Маккензи
2
@ Эндрю Упс. Вы действительно правы. С момента этого ответа прошло так много времени, что я уже совсем забыл об этом :) GWT.log не работает в веб-режиме.
Стрелок
1
Это может не работать в регистраторе консоли IE из-за этой ошибки . Хотя, говорят, это исправлено в GWT 2.6.
Брэд Купит
2
Какой импорт класса Logger вы использовали? Это действительно расстраивает.
CrazySabbath
50
Мне нужно было сделать это в контексте приложения GWT, которое было развернуто на устройстве / эмуляторе Android через PhoneGap (и gwt-phonegap). Ни System.out.println (), ни ведение журнала GWT, как указано выше (с объявлением модуля), не обнаружились в Android logcat, поэтому я прибег к простой оболочке JSNI для console.log:
publicvoidonModuleLoad(){
Logger logger = Logger.getLogger("Test1.java");
logger.log(Level.INFO, "ash: starting onModuleLoad (1)"); // not in logcat
System.out.println( "ash: starting onModuleLoad (2)" ); // not in logcat
consoleLog( "ash: starting onModuleLoad (3)" ); // This shows up
...
}
nativevoidconsoleLog( String message)/*-{
console.log( "me:" + message );
}-*/;
Для всех пользователей IE: чтобы избежать исключений, когда инструменты разработки не открыты, лучше оберните вызов в блок try catch или используйте одно из решений, указанных здесь: stackoverflow.com/q/7742781/1845976
Я надеялся, что это сработает. Я добавил GWT.log («Легко найти»), а затем поискал по всему проекту строку «Легко найти». Это было только в моем источнике. Я проверил документы GWT. Он говорит, что "GWT.log" предназначен только для режима разработки в окне разработки. gwtproject.org/doc/latest/DevGuideLogging.html
Крис Кантрелл
Нет, GWT.log предназначен только для режима DEV / SUPERDEV, но не для производственного использования (он будет вырезан компилятором GWT).
Владимир Шмидт
25
Чтобы войти в консоль браузера, вы можете сделать это очень простым способом, используя собственный. Очень помогает при отладке.
Если вы добавите собственный метод, как показано ниже, вы можете отправить ему строку откуда хотите, и он будет регистрировать ее в консоли браузера.
У меня тоже была эта проблема. Журнал GWT работает, но поскольку он все преобразован в javascript, он выводится на вывод клиента, поэтому просто просмотрите консоль своего браузера, и они будут там. В Google Chrome нажмите трехстрочную кнопку «Настроить» в правом верхнем углу, нажмите «Инструменты» -> «Инструменты разработчика», и появится всплывающая консоль. Там будут ваши востребованные высказывания. Кроме того, Ctrl + Shift + I - это ярлык, который вызывает его. Если вы хотите печатать на сервере, я считаю, что обработчики регистраторов и тому подобное в порядке?
URL-адрес документации в первом ответе уже дает разные параметры конфигурации для входа в разные места. Этот фреймворк, который я написал, предлагает вам полезный api и позволяет вам выбрать реализацию ведения журнала на стороне сервера. Взгляните:
https://code.google.com/p/gwt-usefull-logging/
Я предлагаю вам использовать режим разработчика GWT. Он добавляет небольшие накладные расходы из-за автоматической компиляции и выделения кода на сервере кода, но это довольно ясно, когда возникают некоторые исключения на стороне клиента вашего приложения. Я имею в виду, что иногда хромированная консоль (или firebug, или любой другой встроенный инструмент отладки браузера) не говорит слишком много в этих ситуациях, поверьте мне, обнаружение исключения NullPointerException - это головная боль, когда вы пытаетесь выяснить, что происходит предупредив свой код.
Ответы:
Цитата из документации:
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
Самый простой способ включить ведение журнала:
источник
Мне нужно было сделать это в контексте приложения GWT, которое было развернуто на устройстве / эмуляторе Android через PhoneGap (и gwt-phonegap). Ни System.out.println (), ни ведение журнала GWT, как указано выше (с объявлением модуля), не обнаружились в Android logcat, поэтому я прибег к простой оболочке JSNI для console.log:
public void onModuleLoad() { Logger logger = Logger.getLogger("Test1.java"); logger.log(Level.INFO, "ash: starting onModuleLoad (1)"); // not in logcat System.out.println( "ash: starting onModuleLoad (2)" ); // not in logcat consoleLog( "ash: starting onModuleLoad (3)" ); // This shows up ... } native void consoleLog( String message) /*-{ console.log( "me:" + message ); }-*/;
источник
В GWT версии 2.6.0 метод GWT.log записывает сообщение в консоль браузера, вам не нужно писать собственные методы.
источник
Чтобы войти в консоль браузера, вы можете сделать это очень простым способом, используя собственный. Очень помогает при отладке.
Если вы добавите собственный метод, как показано ниже, вы можете отправить ему строку откуда хотите, и он будет регистрировать ее в консоли браузера.
public static native void console(String text) /*-{ console.log(text); }-*/;
Для получения дополнительной информации об использовании native в GWT: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
источник
Просто суммирую различные возможности, показанные в ответах mreppy и Strelok, в одном фрагменте. Я также добавил один возможный обходной путь для исключений IE, как описано здесь: Почему JavaScript работает только после открытия инструментов разработчика в IE один раз?
java.util.logging.Logger logger = Logger.getLogger(this.getClass().getSimpleName()); native void jsConsoleLog(String message) /*-{ try { console.log(message); } catch (e) { } }-*/; private void log(final String message) { // Logs to Dev mode console only GWT.log(message); // Logs to Dev mode and JavaScript console (requires configuration) this.logger.log(Level.FINEST, message); // Logs to JavaScript console only jsConsoleLog(message);
источник
Еще один вариант с использованием родной консоли ...
Добавьте этот класс:
Затем включите отладку с его помощью в какой-то момент, например, при запуске приложения:
Тогда просто используйте это так:
источник
У меня тоже была эта проблема. Журнал GWT работает, но поскольку он все преобразован в javascript, он выводится на вывод клиента, поэтому просто просмотрите консоль своего браузера, и они будут там. В Google Chrome нажмите трехстрочную кнопку «Настроить» в правом верхнем углу, нажмите «Инструменты» -> «Инструменты разработчика», и появится всплывающая консоль. Там будут ваши востребованные высказывания. Кроме того, Ctrl + Shift + I - это ярлык, который вызывает его. Если вы хотите печатать на сервере, я считаю, что обработчики регистраторов и тому подобное в порядке?
источник
URL-адрес документации в первом ответе уже дает разные параметры конфигурации для входа в разные места. Этот фреймворк, который я написал, предлагает вам полезный api и позволяет вам выбрать реализацию ведения журнала на стороне сервера. Взгляните: https://code.google.com/p/gwt-usefull-logging/
источник
Я предлагаю вам использовать режим разработчика GWT. Он добавляет небольшие накладные расходы из-за автоматической компиляции и выделения кода на сервере кода, но это довольно ясно, когда возникают некоторые исключения на стороне клиента вашего приложения. Я имею в виду, что иногда хромированная консоль (или firebug, или любой другой встроенный инструмент отладки браузера) не говорит слишком много в этих ситуациях, поверьте мне, обнаружение исключения NullPointerException - это головная боль, когда вы пытаетесь выяснить, что происходит предупредив свой код.
источник
Для печати в консоли браузера я использую что-то вроде этого:
EventLogger.java
public class EventLogger { public static void logEvent(String subsys, String grp, String type) { logEvent(GWT.getModuleName(), subsys, grp, Duration.currentTimeMillis(), type); } public static native void logEvent(String module, String subsys, String grp, double millis, String type) /*-{ if ($wnd.__gwtStatsEvent) { $wnd.__gwtStatsEvent({ 'moduleName':module, 'subSystem':subsys, 'evtGroup':grp, 'millis':millis, 'type':type }); } }-*/; }
источник