GWT:将客户端错误/堆栈跟踪发送到服务器?

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)

最终的结果是我得到了错误,它们只是没有被去混淆.我究竟做错了什么?

Tho*_*yer 7

initParam是对RequestFactoryServlet.随RemoteLoggingServiceImpl你应该调用它的setSymbolMapsDirectory方法; 通常通过子类化servlet并从构造函数或init方法中调用方法.