Estoy depurando una aplicación GWT y necesito imprimir algunas cosas en la consola para fines de prueba. System.out.println
y GWT.log
no funcionan. ¿Alguien tiene alguna idea?Cómo imprimir a la consola en GWT
Respuesta
Citando la documentación:
Añadir registro cronológico GWT es realmente muy simple, tan simple como el siguiente ejemplo de código. Sin embargo, entender cómo funciona el registro y cómo configurarlo correctamente es importante, así que tómese el tiempo para leer el resto de este documento.
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
La forma más sencilla para 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");
Gracias por su post Strelok! Esto es exactamente lo que estaba buscando !!! ¡No entiendo por qué la gente votó esta pregunta! –
Creo que el comentario sobre GWT.log no funciona es la razón por la que votaron en contra. – checketts
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(). –
que tenía que hacer esto en el contexto de una aplicación GWT que se ha implementado en un dispositivo Android/emulador a través de PhoneGap (y gwt-phonegap). Ni System.out.println() ni GWT registro que el anterior (con la declaración del módulo) se presentó en Logcat de Android, por lo que recurrió a un simple envoltorio JSNI a 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);
}-*/;
Para todos los usuarios de IE: para evitar excepciones cuando las herramientas de desarrollo no están abiertas, es mejor que envuelva la llamada en un bloque try catch o utilice una de las soluciones que se indican aquí : http://stackoverflow.com/q/7742781/1845976 – schnatterer
¿Podría echar un vistazo a [esta pregunta] (http://stackoverflow.com/questions/32438000/gwt-logger-not-getting-logs-below- nivel severo)? – displayname
Esta es la respuesta correcta (método nativo) –
tuve este problema también . El registro de GWT funciona, pero como todo está convertido en javascript, se imprime en la salida del cliente, por lo que solo tiene que ver la consola de su navegador y estarán allí. En Google Chrome, haga clic en el botón Personalizar de triple línea en la esquina superior derecha, haga clic en Herramientas -> Herramientas del desarrollador y aparecerá la consola. Sus declaraciones solicitadas estarán allí. Además, Ctrl + Shift + I es el atajo que lo abre. Si desea imprimir en el servidor, ¿considero que los manejadores de registradores están en orden?
La url de documentación en la primera respuesta ya ofrece la opción de configuración diferente para iniciar sesión en diferentes lugares. Este framework que escribí te ofrece una aplicación útil y te permite elegir la implementación del registro en el lado del servidor. echar un vistazo: https://code.google.com/p/gwt-usefull-logging/
le sugiero que utilice GWT Developer mode Se añade un poco de sobrecarga provoca la compilación automática y en el servidor de código de asignación de código, pero es bastante claro cuando algunas excepciones surge en el lado del cliente de la aplicación. Quiero decir, algunas veces la consola de Chrome (o firebug o cualquier herramienta incorporada de depuración del navegador) no dice demasiado en esas situaciones, créanme, encontrar una NullPointerException es un dolor en el cuello cuando intentas descubrir qué está pasando alertando su código
para imprimir en la consola del navegador que estoy usando algo como esto:
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
});
}
}-*/;
}
Para conectarse a los navegadores de consola que puede hacerlo utilizando nativa, de una manera muy sencilla. Muy útil en la depuración.
Si agrega un método nativo como el de abajo, puede enviar una cadena desde donde desee y lo registrará en la consola de navegadores.
public static native void console(String text)
/*-{
console.log(text);
}-*/;
Para obtener más información sobre el uso nativo en GWT: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
Además, en lugar de dar el parámetro como Cadena, puede darle algo más (ejemplo: JavaScriptObject) y consolar eso. – erkinyldz
no funcionó para mí –
En GWT versión 2.6.0, el método GWT.log escribe un mensaje a la consola del navegador, no es necesario escribir métodos nativos.
No funcionó en GWT 2.7.0 – pacoverflow
Esperaba que esto funcionara. Agregué un GWT.log ("Fácil de encontrar") y luego buscó en todo el proyecto la cadena "Fácil de encontrar". Fue solo en mi fuente. Revisé los documentos de GWT. Dice que "GWT.log" es solo para el modo dev en la ventana de desarrollo. http://www.gwtproject.org/doc/latest/DevGuideLogging.html – ChrisCantrell
No, GWT.log es solo para el modo DEV/SUPERDEV, pero no para el uso de producción (será recortado por el compilador de GWT). –
Simplemente resumiendo las diferentes posibilidades que se muestran en las respuestas de mreppy y Strelok en un fragmento. También he añadido una posible solución para excepciones IE como se describe aquí: Why does JavaScript only work after opening developer tools in IE once?
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);
Otra variación utilizando la consola nativa ...
Añadir esta clase:
package XXX.XXX.XXX.XXX;
public class Debug {
private static boolean isEnabled_ = false;
public static void enable() { isEnabled_ = true; }
public static void setEnabled(final boolean isEnabled)
{ isEnabled_ = isEnabled; }
public static void log(final String s)
{ if(isEnabled_) nativeConsoleLog(s); }
private static native void nativeConsoleLog(String s)
/*-{ console.log(s); }-*/;
}
A continuación, habilitar la depuración con ella en un cierto punto, al igual que al iniciar la aplicación:
public class XXXXXX implements EntryPoint {
@Override
public void onModuleLoad() {
Debug.enable();
...
}
}
Entonces sólo lo utilizan de esta manera:
Debug.log("Hello World!");
- 1. Cómo imprimir fuente html a la consola con phantomjs
- 2. Imprimir excepciones de JavaScript en un QWebView a la consola
- 3. ¿Cómo imprimir el valor de la consola en mi Eclipse?
- 4. Cómo imprimir registros de desensamblaje en la consola de Xcode
- 5. cscript - imprimir salida en la misma línea en la consola?
- 6. Imprimir en consola sin inundar en C++
- 7. ¿Cómo puedo imprimir los valores de wchar_t en la consola?
- 8. imprimir cadena de colores a la consola con python
- 9. Imprimir texto coloreado en la consola en C++
- 10. Imprimir entero en la consola en el conjunto x86
- 11. ¿Cómo puedo imprimir una cadena a la consola en coordenadas específicas en C++?
- 12. Evite imprimir después de ejecutar el comando en la consola
- 13. ¿Cómo imprimir los encabezados de respuesta a la consola y guardar el contenido en el archivo?
- 14. Consola MongoDB: ¿imprimir en la consola sin una nueva línea final?
- 15. Cómo imprimir en la consola durante la ejecución del trabajo de MapReduce en hadoop
- 16. Cómo imprimir la estructura de un objeto R en la consola
- 17. convertir cadena a la fecha en GWT
- 18. ¿Cómo puedo imprimir en la consola en color de forma cruzada?
- 19. ¿Cómo imprimir el valor actual del objeto Java en la consola de depuración en Eclipse?
- 20. ¿Cómo imprimir la excepción automáticamente en xcode?
- 21. Mover un carácter a la izquierda en la consola
- 22. ¿Cómo imprimir un archivo de reducción en la consola usando node.js?
- 23. Android: ¿Cómo puedo imprimir una variable en la consola de eclipse?
- 24. ¿Cómo salir de LogCat a la consola?
- 25. Imprimir una imagen desde una aplicación de consola
- 26. Cómo actualizar a GWT 2.5 en Eclipse
- 27. Imprimir un retorno de carro en Java en las ventanas en la consola
- 28. GWT equivalente a la cuadrícula Live de Smart-GWT
- 29. Mostrar caracteres UTF-8 en la consola
- 30. Cómo imprimir la matriz?
Pruebe las respuestas publicadas aquí: http://stackoverflow.com/questions/17463928/gwt-log-logs-not-showing-in-the- gwt-dev-mode-console/18216990 # 18216990 – Chepech