How to print to the console in GWT

Gwt

Gwt Problem Overview


I am debugging a GWT application and I need to print some stuff to the console for testing purposes. System.out.println and GWT.log don't work. Does anyone have any ideas?

Gwt Solutions


Solution 1 - Gwt

Quoting the documentation:

> Adding GWT logging is really quite simple, as simple as the following code example. However — understanding how logging works, and > how to correctly configure it is important, so please do take the time > to read the rest of this document.

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

The simplest way to enable logging is:

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

Solution 2 - Gwt

I needed to do this in the context of a GWT application that was deployed to an Android device/emulator via PhoneGap (and gwt-phonegap). Neither System.out.println() nor GWT logging as above (with module declaration) showed up in Android's logcat, so I resorted to a simple JSNI wrapper to 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 );
  }-*/;

Solution 3 - Gwt

In GWT version 2.6.0, method GWT.log writes message to browser console, you don't need to write native methods.

Solution 4 - Gwt

To log to browsers console you can do it using native, in a very simple way. Very helpful in debugging.

If you add a native method like in below, you can send a string to it from where you want and it will log it in the browsers console.

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

For more information about using native in GWT: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

Solution 5 - Gwt

Just summing up the different possibilities shown in the answer's of mreppy and Strelok in one snippet. I also added one possible workaround for IE exceptions as described here: https://stackoverflow.com/q/7742781/1845976

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

Solution 6 - Gwt

Yet another variation using the native console...

Add this class:

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 ); }-*/;
}

Then, enable debugging with it at some point, like upon starting the app:

public class XXXXXX implements EntryPoint {
	@Override
	public void onModuleLoad() {
		Debug.enable();
		...
	}
}

Then just use it like so:

Debug.log("Hello World!");

Solution 7 - Gwt

I had this problem as well. The GWT log works but because it's all converted to javascript, it prints to the client output, so just view your browser's console and they will be there. In Google Chrome click the triple-line Customize button in the top right, click Tools-->Developer tools and the console will pop up. Your sought-after statements will be there. Also, Ctrl+Shift+I is the shortcut that brings it up. If you want to print to the server, I believe logger handlers and such are in order?

Solution 8 - Gwt

The documentation url in the first answer already gives the different configuration option to log to different places. This framework i wrote offers you a usefull api and allows you to choose your server-side logging implementation. Have a look : https://code.google.com/p/gwt-usefull-logging/

Solution 9 - Gwt

I suggest you use GWT Developer mode It adds a little overhead cause the automatic compilation and code-allocating on the code server, but it's pretty clear when some exceptions arises in client side of your application. I mean, some times chrome console (or firebug or whatever browser debugging built-in tool) doesn't say too much in those situations, trust me, finding a NullPointerException is a pain in the neck when you try to figure out what is happening by alerting your code.

Solution 10 - Gwt

For printing to the browser console I am using something like this:

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
        });
    }
}-*/;
}

Solution 11 - Gwt

You can put alaert.Alert(""); in your gwt code compile it and run it you will get pop up on browser when you make request or at the action where you have placed that alert

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1167575View Question on Stackoverflow
Solution 1 - GwtStrelokView Answer on Stackoverflow
Solution 2 - GwtmreppyView Answer on Stackoverflow
Solution 3 - GwtzergoodView Answer on Stackoverflow
Solution 4 - GwterkinyldzView Answer on Stackoverflow
Solution 5 - GwtschnattererView Answer on Stackoverflow
Solution 6 - GwtBuvinJView Answer on Stackoverflow
Solution 7 - GwtGlenninatorView Answer on Stackoverflow
Solution 8 - GwtFrançois WauquierView Answer on Stackoverflow
Solution 9 - Gwtuser743489View Answer on Stackoverflow
Solution 10 - GwtIevgen DereviankoView Answer on Stackoverflow
Solution 11 - Gwtfaizan9689View Answer on Stackoverflow