之前必须提出此问题,但我没有搜索过。我正在寻找一种方法来捕获所有客户端混淆的错误/堆栈跟踪并将它们发送到服务器进行调试。我确实使用window.onerror看到了关于javascript的一些内容,但我正在寻找一种方法来使用GWT执行此操作,然后显示一个非混淆的堆栈跟踪。
任何人都知道如何做到这一点?谢谢!
修改 经过几个小时的工作后,我通过以下方式将日志从GWT转移到服务器:
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
@Override
public void onUncaughtException(Throwable e) {
log.log(Level.SEVERE, e.getMessage(), e);
}
});
现在使用gwt附带的默认记录器。这是相关的.gwt.xml:
<inherits name="com.google.gwt.logging.Logging" />
<set-property name="gwt.logging.logLevel" value="WARNING" />
<set-property name="gwt.logging.enabled" value="TRUE" />
<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" />
<set-property name="gwt.logging.consoleHandler" value="DISABLED" />
<set-property name="gwt.logging.developmentModeHandler" value="ENABLED" />
<set-property name="gwt.logging.systemHandler" value="ENABLED" />
<set-property name="gwt.logging.popupHandler" value="DISABLED" />
<set-property name="gwt.logging.firebugHandler" value="DISABLED" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true"/>
<set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true"/>
我在网上到处搜索,我甚至发现这是来自gwt-log的东西,它似乎是在它被实现到GWT SDK之前:http://code.google.com/p/gwt-log/wiki/GettingStarted#Override_the_default_URL_which_the_RemoteLogger_connects_to
我按照上面链接中的说明更新了软件包名称,但没有。我现在用以下参数编译:-deploy war / WEB-INF / deploy /
这是我的web.xml的相关部分:
<!-- Servlets -->
<servlet>
<servlet-name>RemoteLoggerServlet</servlet-name>
<servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class>
<init-param>
<param-name>symbolMaps</param-name>
<param-value>WEB-INF/deploy/**MYAPPNAMEHERE**/symbolMaps/</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>RemoteLoggerServlet</servlet-name>
<url-pattern>/**MYAPPNAMEHERE**/remote_logging</url-pattern>
</servlet-mapping>
最终结果是我得到了错误,它们只是没有被去混淆。我做错了什么?
答案 0 :(得分:7)
initParam
适用于RequestFactoryServlet
。使用RemoteLoggingServiceImpl
,您应该调用其setSymbolMapsDirectory
方法;通常通过子类化servlet并从构造函数或init
方法调用方法。
答案 1 :(得分:3)
GWT内置了对日志记录的支持,detailed in the documentation。还支持sending log messages from the client to the server。
如果要捕获所有异常,可能必须编写特定于浏览器的代码。例如,Mozilla有一个window.onerror事件,但我不认为这是标准的。