Estoy depurando una aplicación GWT y necesito imprimir algunas cosas en la consola para realizar pruebas. System.out.printlny GWT.logno trabajes. ¿Alguien tiene alguna idea?
Agregar el registro de GWT es realmente bastante simple, tan simple como el siguiente ejemplo de código. Sin embargo, es importante comprender cómo funciona el registro y cómo configurarlo correctamente, así que tómese el tiempo para leer el resto de este documento.
La forma más sencilla de habilitar el registro es:
# 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");
Creo que el comentario sobre que GWT.log no funciona es la razón por la que te votaron en contra.
checketts
11
Sí, GWT.log solo funciona en DevMode, por lo que si está compilando su código con el compilador GWT, nunca verá ningún resultado de GWT.log ().
Andrew Mackenzie
2
@ Andrew Ooops. De hecho ESTÁS en lo correcto. Ha pasado tanto tiempo desde esta respuesta, que ya me olvidé por completo :) GWT.log no funciona en el modo web.
Strelok
1
Es posible que esto no funcione en el registrador de la consola de IE debido a este error . Sin embargo, dicen que está arreglado en GWT 2.6.
Brad Cupit
2
¿Qué importación de clase Logger usó? Esto es realmente frustrante.
CrazySabbath
50
Necesitaba hacer esto en el contexto de una aplicación GWT que se implementó en un dispositivo / emulador de Android a través de PhoneGap (y gwt-phonegap). Ni System.out.println () ni el registro de GWT como el anterior (con la declaración del módulo) aparecieron en el logcat de Android, así que recurrí a un contenedor JSNI simple para console.log:
publicvoid onModuleLoad(){Logger logger =Logger.getLogger("Test1.java");
logger.log(Level.INFO,"ash: starting onModuleLoad (1)");// not in logcatSystem.out.println("ash: starting onModuleLoad (2)");// not in logcat
consoleLog("ash: starting onModuleLoad (3)");// This shows up...}nativevoid consoleLog(String message)/*-{
console.log( "me:" + message );
}-*/;
Para todos los usuarios de IE: para evitar excepciones cuando las herramientas de desarrollo no se abren, es mejor que envuelva la llamada en un bloque try catch o use una de las soluciones indicadas aquí: stackoverflow.com/q/7742781/1845976
Esperaba que esto funcionara. Agregué un GWT.log ("Fácil de encontrar") y luego busqué en todo el proyecto la cadena "Fácil de encontrar". Estaba solo en mi fuente. Revisé los documentos de GWT. Dice que "GWT.log" es solo para el modo de desarrollo en la ventana de desarrollo. gwtproject.org/doc/latest/DevGuideLogging.html
ChrisCantrell
No, GWT.log es solo para el modo DEV / SUPERDEV, pero no para uso de producción (será eliminado por el compilador de GWT).
Wladimir Schmidt
24
Para iniciar sesión en la consola de los navegadores puedes hacerlo usando nativo, de una manera muy sencilla. Muy útil en la depuración.
Si agrega un método nativo como el que se muestra a continuación, puede enviarle una cadena desde donde desee y lo registrará en la consola del navegador.
java.util.logging.Logger logger =Logger.getLogger(this.getClass().getSimpleName());nativevoid jsConsoleLog(String message)/*-{
try {
console.log(message);
} catch (e) {
}
}-*/;privatevoid log(finalString 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);
Yo tuve este problema también. El registro de GWT funciona, pero debido a que todo está convertido a javascript, se imprime en la salida del cliente, así que solo vea la consola de su navegador y estarán allí. En Google Chrome, haga clic en el botón Personalizar de tres líneas en la parte superior derecha, haga clic en Herramientas -> Herramientas para desarrolladores y aparecerá la consola. Sus declaraciones solicitadas estarán allí. Además, Ctrl + Shift + I es el atajo que lo muestra. Si desea imprimir en el servidor, creo que los controladores de registro y demás están en orden.
La URL de documentación en la primera respuesta ya brinda la opción de configuración diferente para iniciar sesión en diferentes lugares. Este marco que escribí le ofrece una api útil y le permite elegir su implementación de registro del lado del servidor. Eche un vistazo:
https://code.google.com/p/gwt-usefull-logging/
Le sugiero que use el modo de desarrollador de GWT. Agrega un poco de sobrecarga debido a la compilación automática y la asignación de código en el servidor de código, pero es bastante claro cuando surgen algunas excepciones en el lado del cliente de su aplicación. Quiero decir, algunas veces la consola Chrome (o Firebug o cualquier herramienta incorporada de depuración del navegador) no dice demasiado en esas situaciones, créame, encontrar una NullPointerException es un dolor en el cuello cuando intenta averiguar qué está sucediendo alertando a su código.
Respuestas:
Citando la documentación:
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
La forma más sencilla de habilitar el registro es:
fuente
Necesitaba hacer esto en el contexto de una aplicación GWT que se implementó en un dispositivo / emulador de Android a través de PhoneGap (y gwt-phonegap). Ni System.out.println () ni el registro de GWT como el anterior (con la declaración del módulo) aparecieron en el logcat de Android, así que recurrí a un contenedor JSNI simple para console.log:
fuente
En GWT versión 2.6.0, el método GWT.log escribe el mensaje en la consola del navegador, no es necesario que escriba métodos nativos.
fuente
Para iniciar sesión en la consola de los navegadores puedes hacerlo usando nativo, de una manera muy sencilla. Muy útil en la depuración.
Si agrega un método nativo como el que se muestra a continuación, puede enviarle una cadena desde donde desee y lo registrará en la consola del navegador.
Para obtener más información sobre el uso de nativo en GWT: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
fuente
Simplemente resumiendo las diferentes posibilidades que se muestran en las respuestas de mreppy y Strelok en un solo fragmento. También agregué una posible solución para las excepciones de IE como se describe aquí: ¿Por qué JavaScript solo funciona después de abrir las herramientas de desarrollador en IE una vez?
fuente
Otra variación más usando la consola nativa ...
Agrega esta clase:
Luego, habilite la depuración con él en algún momento, como al iniciar la aplicación:
Entonces utilícelo así:
fuente
Yo tuve este problema también. El registro de GWT funciona, pero debido a que todo está convertido a javascript, se imprime en la salida del cliente, así que solo vea la consola de su navegador y estarán allí. En Google Chrome, haga clic en el botón Personalizar de tres líneas en la parte superior derecha, haga clic en Herramientas -> Herramientas para desarrolladores y aparecerá la consola. Sus declaraciones solicitadas estarán allí. Además, Ctrl + Shift + I es el atajo que lo muestra. Si desea imprimir en el servidor, creo que los controladores de registro y demás están en orden.
fuente
La URL de documentación en la primera respuesta ya brinda la opción de configuración diferente para iniciar sesión en diferentes lugares. Este marco que escribí le ofrece una api útil y le permite elegir su implementación de registro del lado del servidor. Eche un vistazo: https://code.google.com/p/gwt-usefull-logging/
fuente
Le sugiero que use el modo de desarrollador de GWT. Agrega un poco de sobrecarga debido a la compilación automática y la asignación de código en el servidor de código, pero es bastante claro cuando surgen algunas excepciones en el lado del cliente de su aplicación. Quiero decir, algunas veces la consola Chrome (o Firebug o cualquier herramienta incorporada de depuración del navegador) no dice demasiado en esas situaciones, créame, encontrar una NullPointerException es un dolor en el cuello cuando intenta averiguar qué está sucediendo alertando a su código.
fuente
Para imprimir en la consola del navegador, estoy usando algo como esto:
EventLogger.java
fuente