98 votes

Comment imprimer à la console dans GWT

Je suis en train de déboguer une application GWT et j'ai besoin d'imprimer quelques trucs sur la console à des fins de test. System.out.println et GWT.log ne fonctionnent pas. Quelqu'un a-t-il une idée ?

79voto

Strelok Points 18453

Citation de la documentation :

L'ajout de la journalisation GWT est vraiment très simple, aussi simple que l'exemple de code suivant. Cependant - comprendre le fonctionnement de la journalisation, et comment le configurer correctement est important, donc s'il vous plaît prenez le temps de de lire le reste de ce document.

http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html

La façon la 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");

51voto

mreppy Points 361

J'avais besoin de faire cela dans le contexte d'une application GWT qui a été déployée sur un dispositif/émulateur Android via PhoneGap (et gwt-phonegap). Ni System.out.println() ni la journalisation GWT comme ci-dessus (avec déclaration de module) n'apparaissent dans le logcat d'Android, donc j'ai eu recours à un simple wrapper JSNI vers 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 );
  }-*/;

30voto

erkinyldz Points 107

Pour enregistrer dans la console du navigateur, vous pouvez le faire en utilisant le langage natif, d'une 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 de caractères d'où vous voulez et elle l'enregistrera dans la console du navigateur.

public static native void console(String text)
/*-{
    console.log(text);
}-*/;

Pour plus d'informations sur l'utilisation des natifs dans GWT : http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

28voto

zergood Points 141

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.

7voto

schnatterer Points 730

Il suffit de résumer les différentes possibilités présentées dans les réponses de mreppy et Strelok en un seul morceau. J'ai également ajouté une solution de contournement possible pour les exceptions d'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 ?

    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);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X