Str*_*lok 75
引用文档:
添加GWT日志记录非常简单,就像下面的代码示例一样简单.但是 - 了解日志记录的工作原理以及如何正确配置它非常重要,因此请花点时间阅读本文档的其余部分.
http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html
启用日志记录的最简单方法是:
# 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");
Run Code Online (Sandbox Code Playgroud)
小智 45
我需要在通过PhoneGap(和gwt-phonegap)部署到Android设备/模拟器的GWT应用程序的上下文中执行此操作.System.out.println()和上面的GWT日志记录(带模块声明)都没有出现在Android的logcat中,所以我使用了一个简单的JSNI包装器来访问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 );
}-*/;
Run Code Online (Sandbox Code Playgroud)
erk*_*ldz 22
要记录到浏览器控制台,您可以使用本机以非常简单的方式执行此操作.非常有用的调试.
如果您添加如下所示的本机方法,您可以从您想要的位置向其发送字符串,并将其记录在浏览器控制台中.
public static native void console(String text)
/*-{
console.log(text);
}-*/;
Run Code Online (Sandbox Code Playgroud)
有关在GWT中使用native的更多信息:http: //www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
只是在一个片段中总结了mreppy和Strelok答案中显示的不同可能性.我还为IE异常添加了一种可能的解决方法,如下所述:为什么JavaScript只在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);
Run Code Online (Sandbox Code Playgroud)
使用本机控制台的另一个变体......
添加此课程:
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 ); }-*/;
}
Run Code Online (Sandbox Code Playgroud)
然后,在某些时候启用调试,就像启动应用程序一样:
public class XXXXXX implements EntryPoint {
@Override
public void onModuleLoad() {
Debug.enable();
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后就像这样使用它:
Debug.log("Hello World!");
Run Code Online (Sandbox Code Playgroud)