我刚接触我的项目正在使用的GWT框架。我想跟踪代码流,因此我认为我可以放入System.out日志或调试日志。但没有任何效果。然后我来到这个页面,看到它的记录完全不同。我补充道,
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 ); }-*/;
}
并在我的课堂内打电话
public void onModuleLoad() {
logSC("@@@@ onModuleLoad");
Debug.enable();
Debug.log("&&&&&&&INSIDE BICC******DEBUG LOGGERRRRRRRRR**************************");
}
但我没有得到调试日志。您能否告诉我如何启用日志并在控制台窗口中打印。
此致 Saranya Chandrasekaran
答案 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 gitter channel中要求进行实时互动聊天
答案 2 :(得分:0)
答案 3 :(得分:0)
您需要在gwt.xml中添加启用它
<set-property name="gwt.logging.enabled" value="TRUE" />