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

标签 gwt error-handling

之前必须问过这个问题,但我没有搜索过。我正在寻找一种方法来捕获所有客户端混淆的错误/堆栈跟踪并将它们发送到服务器进行调试。我确实在使用 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>

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

最佳答案

initParam适用于 RequestFactoryServlet .与 RemoteLoggingServiceImpl你应该调用它 setSymbolMapsDirectory方法;通常通过子类化 servlet 并从构造函数或 init 调用方法方法。

关于GWT:将客户端错误/堆栈跟踪发送到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578794/

相关文章:

java - 如何通过 HTTPS 加载 GWT 可视化 API

php - 我可以在错误日志中添加其他信息吗?

angular - 为什么没有将此throwError捕获在catchError中?

c# - 当无法找到请求的 PostgreSQL 表时,如何捕获异常并使用错误代码?

java - 需要帮助通过客户端 GWT 模拟扩展 Guava

java - DateChooser 无法在 smartgwt 中直观地更改为选定日期

angular - 如何处理HTTP请求中的多个错误代码方案

javascript - 我的Promise捕获异常,我不知道如何打印错误消息

javascript - 如何使 GWT/GXT RichTextEditor 工具提示不可选择?

java - 当父类(super class)使用@Inject时,如何构造一个类?