Esto debe haberse preguntado antes, pero no he tenido ninguna en las búsquedas. Estoy buscando una forma de detectar todos los errores/restos de pila ofuscados del lado del cliente y enviarlos al servidor para su depuración. Vi algo sobre esto para javascript usando window.onerror, pero estoy buscando una forma de hacer esto con GWT, y luego mostrar un rastro de pila no ofuscado.GWT: ¿envía errores de cliente/rastros de pila al servidor?
¿Alguien sabe cómo hacer esto? ¡Gracias!
Editar: Después de trabajar en esto durante varias horas más, tengo los registros que pasan desde GWT al servidor a través de:
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
@Override
public void onUncaughtException(Throwable e) {
log.log(Level.SEVERE, e.getMessage(), e);
}
});
que está utilizando el valor predeterminado Logger incluye con GWT ahora . este es el .gwt.xml relevante:
<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"/>
He buscado por todas partes en línea, e incluso he encontrado esto que es algo de GWT-registro, que parece que es antes de que se implementó en el SDK de GWT: http://code.google.com/p/gwt-log/wiki/GettingStarted#Override_the_default_URL_which_the_RemoteLogger_connects_to
Seguí las instrucciones del enlace de arriba, actualizando los nombres de los paquetes y lo que no. Compilo ahora con el siguiente argumento: la guerra -Implemente/WEB-INF/desplegar/
y esta es la parte pertinente de mi 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>
El resultado final es que consigo los errores , simplemente no están desconfigurados. ¿Qué estoy haciendo mal?
Espera, ¿así que puedo desobustar mis registros con RequestFactoryServlet? – spierce7
@ spierce7: No necesita el parámetro init en su gwt.xml. Simplemente agregue ' ' a su gwt.xml. Además, el despliegue no es necesario si usa la ubicación predeterminada, ya que está haciendo –
@HilbrandBouwkamp Hola, gracias por su comentario. No tengo un parámetro init en mi gwt.xml. ¿Cuál es el compilador set-property-name = ".stackMode "replace? No estoy seguro de que entiendo. Por supuesto, necesito tener RemoteLoggingServlet implementado correctamente? EDIT: así la propiedad compiler.stackMode reemplaza a recordLineNumbers y recordFileNames? – spierce7