GWT框架启用控制台日志

时间:2018-06-13 14:36:36

标签: gwt gwt-rpc

我刚接触我的项目正在使用的GWT框架。我想跟踪代码流,因此我认为我可以放入System.out日志或调试日志。但没有任何效果。然后我来到这个页面,看到它的记录完全不同。我补充道,

Debug.Java

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

并在我的课堂内打电话

Frame.java

public void onModuleLoad() {

    logSC("@@@@ onModuleLoad");

     Debug.enable();


    Debug.log("&&&&&&&INSIDE BICC******DEBUG LOGGERRRRRRRRR**************************");
}

但我没有得到调试日志。您能否告诉我如何启用日志并在控制台窗口中打印。

此致 Saranya Chandrasekaran

4 个答案:

答案 0 :(得分:2)

JSNI中的console.log调用需要一个$wnd.前缀,以便它在正确的窗口上运行(gwt默认为在iframe中对其代码进行沙盒化)。

private static native void nativeConsoleLog( String s ) /*-{
    $wnd.console.log( s ); 
}-*/;

请注意,使用JsInterop不会出现此问题 - 将elemental2-core添加到项目中,并调用DomGlobal.console.log(),它将在主窗口中运行。

答案 1 :(得分:1)

这不是在GWT中进行日志记录的正确方法,GWT已经使您能够在浏览器上使用Java日志记录,因此要启用Java日志记录,您需要执行以下步骤: 1-通过将<inherits name="com.google.gwt.logging.Logging"/>添加到您的XXX.gwt.xml文件中来继承Java日志记录模块,这将启用日志记录。

2-通过添加以下内容来启用控制台记录器:

<set-property name="gwt.logging.logLevel" value="INFO"/>

<set-property name="gwt.logging.enabled" value="TRUE"/>

<set-property name="gwt.logging.consoleHandler" value="ENABLED"/>

-这是默认设置。

然后您可以像这样定义普通的Java记录器

public static final Logger LOGGER = Logger.getLogger(MyClass.getName());
//use the logger
LOGGER.log(Level.info, "my log message");

这种日志记录甚至可以在生产模式下工作,并且在编译后会导致更大的javascript文件。任何与XXX.gwt.xml中定义的日志级别不匹配的日志语句都将从编译最终结果中删除。

为开发模式或Super dev模式记录日志的另一种方法是使用GWT.log这种日志记录仅适用于开发模式,但会在生产编译中删除。

有关此主题的更多信息,请参考gwtproject web site

您也可以在gwt-users google group

中询问

或者您可以在gwt gitter channel中要求进行实时互动聊天

答案 2 :(得分:0)

请参见此处使用gwt日志框架的解决方案:

gwt logging not working

它使用java.util.log

答案 3 :(得分:0)

您需要在gwt.xml中添加启用它

<set-property name="gwt.logging.enabled" value="TRUE" />