【发布时间】:2012-03-06 20:40:46
【问题描述】:
这一定是以前被问过的,但我在搜索中没有任何问题。我正在寻找一种方法来捕获所有客户端混淆错误/堆栈跟踪并将它们发送到服务器进行调试。我确实在使用 window.onerror 的 javascript 中看到了一些关于此的内容,但我正在寻找一种使用 GWT 执行此操作的方法,然后显示非混淆堆栈跟踪。
有人知道怎么做吗?谢谢!
编辑: 经过几个小时的工作后,我已经通过以下方式将日志从 GWT 传输到服务器:
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
@Override
public void onUncaughtException(Throwable e) {
log.log(Level.SEVERE, e.getMessage(), e);
}
});
现在使用的是 gwt 附带的默认 Logger。这是相关的 .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>
最终结果是我得到了错误,它们只是没有被去混淆。我做错了什么?
【问题讨论】:
标签: gwt error-handling