关于gwt:使用SuperDevMode记录。 System.out.println不起作用


Logging with SuperDevMode. System.out.println not working

为什么?

在客户端中使用System.out.println时-CodeServer控制台中没有任何输出。

现在我正在登录浏览器控制台,但是如何登录系统控制台?

p.s。我知道最好的登录gwt的方法是使用com.google.gwt.logging.Logging模块。现在,它也可以与系统控制台一起使用。


super dev模式与生产编译基本上相同(只是未优化)

在生产中(编译的javascript),System.out不会将任何内容打印到Java服务器端进程中。您的代码在Javascript VM中运行,因此需要仔细检查才能打印到Java控制台。

如果您以开发人员模式运行,则在连接到浏览器内部插件的JVM内运行。这就是System.out起作用的原因。


不是最漂亮的解决方案,但您可以创建一个本机JSNI方法,如下所示:

1
2
3
public static native void debug(String text)/*-{
    console.debug(text)
}-*/;

然后调用:

1
debug("text here").

它应该输出到控制台。


我设置了一个远程记录器来解决此问题。这样,所有客户端日志语句都将发送到仍可进行日志记录的服务器。您可以在此处找到说明:在GWT中设置remoteLoggingServlet。

然后,您可以使用常规的Java util日志记录。

1
2
import java.util.logging.Logger;
private static Logger log = Logger.getLogger("mylogger");

不幸的是,堆栈跟踪是在javascript中。我还没有弄清楚如何获得适当的Java的。
希望这可以帮助!