GWT Framework 启用控制台日志

Posted

技术标签:

【中文标题】GWT Framework 启用控制台日志【英文标题】:GWT Framework Enable console logs 【发布时间】:2018-06-13 14:36:35 【问题描述】:

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

调试.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**************************");

但我没有得到调试日志。你能告诉我我应该怎么做才能启用日志并在我的控制台窗口中打印。

问候, 萨兰亚·钱德拉塞卡兰

【问题讨论】:

试试 GWT.log("message); 这将在 SDM 中工作。 @ElHoss: GWT.log 也不起作用:(。我在控制台中没有看到任何日志。请你帮帮我 【参考方案1】:

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

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

请注意,使用 JsInterop 不会出现此问题 - 将 elemental2-core 添加到您的项目中,然后调用 DomGlobal.console.log() 即可在主窗口中使用。

【讨论】:

【参考方案2】:

这不是在 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 中定义的日志级别不匹配的日志语句都将从编译最终结果中删除。

另一种为开发模式或超级开发模式进行日志记录的方法是使用GWT.log 这种类型的日志记录仅适用于开发模式,但将在生产编译中删除。

有关此主题的更多阅读资料,您可以参考gwtproject web site

您也可以在gwt-users google group提问

或者您可以在gwt gitter channel 中询问实时互动聊天

【讨论】:

【参考方案3】:

在此处查看使用 gwt 日志框架的解决方案:

gwt logging not working

它使用 java.util.log

【讨论】:

【参考方案4】:

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

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

【讨论】:

这还不是全部。代码还需要使用 jul-logging。

以上是关于GWT Framework 启用控制台日志的主要内容,如果未能解决你的问题,请参考以下文章

在 Selenium 中测试 GWT SimplePager ImageButton 启用状态

win10怎么启用net framework 3.5

GWT - Datagrid:键盘单选,启用多选时

如何启用/禁用和/或显示/隐藏 GWT MenuItem

GWT 日志记录设置

gwt、rpc 服务、StatusCodeException 和无可用日志