Je débogue une application GWT et j'ai besoin d'imprimer des éléments sur la console à des fins de test. System.out.printlnet GWT.logne fonctionne pas. Quelqu'un a-t-il une idée?
L'ajout de la journalisation GWT est vraiment assez simple, aussi simple que l'exemple de code suivant. Cependant, il est important de comprendre comment fonctionne la journalisation et comment la configurer correctement, veuillez donc prendre le temps de lire le reste de ce document.
Le moyen le plus simple d'activer la journalisation est:
# 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");
Je pense que le commentaire sur le fait que GWT.log ne fonctionne pas est la raison pour laquelle vous avez été rejeté.
checketts le
11
Ouais, GWT.log ne fonctionne qu'en DevMode, donc si vous compilez votre code avec le compilateur GWT, vous ne verrez jamais aucune sortie de GWT.log ().
Andrew Mackenzie le
2
@Andrew Ooops. Vous avez en effet raison. Cela fait si longtemps depuis cette réponse, que j'ai déjà tout oublié :) GWT.log ne fonctionne pas en mode Web.
Strelok
1
Cela peut ne pas fonctionner dans le journal de console d'IE à cause de ce bogue . Ils disent cependant que c'est corrigé dans GWT 2.6.
Brad Cupit
2
Quelle est l'importation de classe Logger que vous avez utilisée? C'est vraiment frustrant.
CrazySabbath
50
J'avais besoin de le faire dans le contexte d'une application GWT qui a été déployée sur un appareil / émulateur Android via PhoneGap (et gwt-phonegap). Ni System.out.println () ni la journalisation GWT comme ci-dessus (avec la déclaration de module) ne se sont affichées dans le logcat d'Android, j'ai donc eu recours à un simple wrapper JSNI pour 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 );
}-*/;
Pour tous les utilisateurs d'IE: afin d'éviter les exceptions lorsque les outils de développement ne sont pas ouverts, mieux vaut encapsuler l'appel dans un bloc try catch ou utiliser l'une des solutions énoncées ici: stackoverflow.com/q/7742781/1845976
J'espérais que cela fonctionnerait. J'ai ajouté un GWT.log ("Facile à trouver"), puis j'ai recherché dans tout le projet la chaîne "Facile à trouver". C'était seulement dans ma source. J'ai vérifié les documents GWT. Il dit que "GWT.log" est uniquement pour le mode de développement dans la fenêtre de développement. gwtproject.org/doc/latest/DevGuideLogging.html
ChrisCantrell
Non, GWT.log est uniquement pour le mode DEV / SUPERDEV, mais pas pour une utilisation en production (il sera coupé par le compilateur de GWT).
Wladimir Schmidt
24
Pour vous connecter à la console des navigateurs, vous pouvez le faire en natif, de manière très simple. Très utile pour le débogage.
Si vous ajoutez une méthode native comme ci-dessous, vous pouvez lui envoyer une chaîne à partir de l'endroit où vous le souhaitez et elle l'enregistrera dans la console du navigateur.
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);
J'ai eu ce problème aussi. Le journal GWT fonctionne, mais comme tout est converti en javascript, il s'imprime sur la sortie du client, alors affichez simplement la console de votre navigateur et ils seront là. Dans Google Chrome, cliquez sur le bouton Personnaliser à trois lignes en haut à droite, cliquez sur Outils -> Outils de développement et la console apparaîtra. Vos déclarations recherchées seront là. De plus, Ctrl + Maj + I est le raccourci qui l'affiche. Si vous souhaitez imprimer sur le serveur, je crois que les gestionnaires de journaux et autres sont en ordre?
L'URL de la documentation dans la première réponse donne déjà l'option de configuration différente pour se connecter à différents endroits. Ce framework que j'ai écrit vous offre une API utile et vous permet de choisir votre implémentation de journalisation côté serveur. Jetez un œil:
https://code.google.com/p/gwt-usefull-logging/
Je vous suggère d'utiliser le mode développeur GWT. Cela ajoute un peu de surcharge à la compilation automatique et à l'allocation de code sur le serveur de code, mais il est assez clair lorsque certaines exceptions surviennent du côté client de votre application. Je veux dire, parfois, la console chrome (ou Firebug ou tout autre outil intégré de débogage du navigateur) ne dit pas trop dans ces situations, croyez-moi, trouver une NullPointerException est une douleur dans le cou lorsque vous essayez de comprendre ce qui se passe en alertant votre code.
Réponses:
Citant la documentation:
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
Le moyen le plus simple d'activer la journalisation est:
la source
J'avais besoin de le faire dans le contexte d'une application GWT qui a été déployée sur un appareil / émulateur Android via PhoneGap (et gwt-phonegap). Ni System.out.println () ni la journalisation GWT comme ci-dessus (avec la déclaration de module) ne se sont affichées dans le logcat d'Android, j'ai donc eu recours à un simple wrapper JSNI pour console.log:
la source
Dans GWT version 2.6.0, la méthode GWT.log écrit le message dans la console du navigateur, vous n'avez pas besoin d'écrire des méthodes natives.
la source
Pour vous connecter à la console des navigateurs, vous pouvez le faire en natif, de manière très simple. Très utile pour le débogage.
Si vous ajoutez une méthode native comme ci-dessous, vous pouvez lui envoyer une chaîne à partir de l'endroit où vous le souhaitez et elle l'enregistrera dans la console du navigateur.
Pour plus d'informations sur l'utilisation native dans GWT: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
la source
Résumant simplement les différentes possibilités présentées dans les réponses de mreppy et Strelok en un seul extrait. J'ai également ajouté une solution de contournement possible pour les exceptions IE comme décrit ici: Pourquoi JavaScript ne fonctionne-t-il qu'après avoir ouvert une fois les outils de développement dans IE?
la source
Encore une autre variante utilisant la console native ...
Ajoutez cette classe:
Ensuite, activez le débogage avec celui-ci à un moment donné, comme au démarrage de l'application:
Ensuite, utilisez-le comme ceci:
la source
J'ai eu ce problème aussi. Le journal GWT fonctionne, mais comme tout est converti en javascript, il s'imprime sur la sortie du client, alors affichez simplement la console de votre navigateur et ils seront là. Dans Google Chrome, cliquez sur le bouton Personnaliser à trois lignes en haut à droite, cliquez sur Outils -> Outils de développement et la console apparaîtra. Vos déclarations recherchées seront là. De plus, Ctrl + Maj + I est le raccourci qui l'affiche. Si vous souhaitez imprimer sur le serveur, je crois que les gestionnaires de journaux et autres sont en ordre?
la source
L'URL de la documentation dans la première réponse donne déjà l'option de configuration différente pour se connecter à différents endroits. Ce framework que j'ai écrit vous offre une API utile et vous permet de choisir votre implémentation de journalisation côté serveur. Jetez un œil: https://code.google.com/p/gwt-usefull-logging/
la source
Je vous suggère d'utiliser le mode développeur GWT. Cela ajoute un peu de surcharge à la compilation automatique et à l'allocation de code sur le serveur de code, mais il est assez clair lorsque certaines exceptions surviennent du côté client de votre application. Je veux dire, parfois, la console chrome (ou Firebug ou tout autre outil intégré de débogage du navigateur) ne dit pas trop dans ces situations, croyez-moi, trouver une NullPointerException est une douleur dans le cou lorsque vous essayez de comprendre ce qui se passe en alertant votre code.
la source
Pour imprimer sur la console du navigateur, j'utilise quelque chose comme ceci:
EventLogger.java
la source