spi*_*ce7 5 error-handling gwt
这之前必须要求,但我没有搜索过.我正在寻找一种方法来捕获所有客户端混淆的错误/堆栈跟踪并将它们发送到服务器进行调试.我确实使用window.onerror看到了关于javascript的一些内容,但我正在寻找一种方法来使用GWT,然后显示一个非混淆的堆栈跟踪.
有人知道怎么做吗?谢谢!
编辑: 经过几个小时的工作后,我已经通过以下方式将日志从GWT转移到服务器:
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
@Override
public void onUncaughtException(Throwable e) {
log.log(Level.SEVERE, e.getMessage(), e);
}
});
Run Code Online (Sandbox Code Playgroud)
那就是现在使用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"/>
Run Code Online (Sandbox Code Playgroud)
我在网上到处搜索,我甚至发现这是来自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>
Run Code Online (Sandbox Code Playgroud)
最终的结果是我得到了错误,它们只是没有被去混淆.我究竟做错了什么?
该initParam是对RequestFactoryServlet.随RemoteLoggingServiceImpl你应该调用它的setSymbolMapsDirectory方法; 通常通过子类化servlet并从构造函数或init方法中调用方法.