2011-01-25 13 views
10

En grails, ¿cómo puedo agregar un código al UrlMappings.groovy (por ejemplo, println) para poder averiguar qué es el URI de solicitud y qué asignación se está aplicando (si existe)?grails y depuración UrlMappings

Antecedentes:

En esta situación, hay dos servidores que sirven cosas diferentes en función de la extensión de archivo. Por lo tanto, los dos servidores deben ver siempre las extensiones de archivo para que continúe el procesamiento de errores. De lo contrario, los servidores se confunden y 1 sirve una página 404 en lugar de nuestra página 500.

La imagen más grande implica tomar una respuesta de 500 debido a algo así como una NullPointerException y rastrearla a través del código para ver qué está sucediendo.

código como el siguiente que está en http://jetlet.blogspot.com/2010/08/grails-exception-handling-with-response.html añadí:

"500" (controller: "error", action: "internalError") 

En la prueba de esto, yo estoy lanzando una NullPointerException (NPE) a propósito. Se llama al manejo 500 y se sirve 500 páginas al ingresar la URL en la barra de direcciones del navegador. Sin embargo, al publicar un formulario en el servidor y hacer que el código de procesamiento explote a propósito con un NPE, no se llama al código de manejo "500". La URL en la acción del formulario parece terminar con una extensión. Por lo tanto, no estoy seguro de por qué la diferencia en el comportamiento entre el GET (URL del navegador) y el POST (envío del formulario).

¡Gracias por sus ideas y pensamientos para rastrear esto!

+0

lo siento, su palabra es bastante vaga para mí. ¿Te importaría dar un ejemplo más detallado? –

+0

El código para ilustrar su pregunta sería muy bienvenido aquí – fabien7474

+0

Gracias por su interés en esta pregunta y sus respuestas. En pocas palabras, cuando estoy trabajando localmente en mi caja con mi único servidor embarcadero todo funciona bien. Al enviar un formulario, el código que arroja una NullPointerException pasa por el código de procesamiento de errores como se esperaba. Cuando no estoy en mi caja pero en un entorno más complicado, obtengo una página 404. Este entorno más complicado tiene 1 servidor que busca extensiones en una solicitud para decidir si pasa o no la solicitud hasta el servidor número 2. En este punto, necesito que alguien pueda rastrear lo que está sucediendo. – finneycanhelp

Respuesta

10

En su Config.groovy puede modificar la configuración de log4j para eventos de correlación de URL mediante la adición de

all 'org.codehaus.groovy.grails.web.mapping' 

a la configuración de log4j existentes. todo es la configuración más detallada para que pueda ser ajustada si eso comienza dándote demasiado. Puede encontrar más información en la documentación oficial de Grails aquí: http://grails.org/doc/latest/guide/3.%20Configuration.html

+1

¡Gracias por el registro! Lo extraño es que no veo el registro asociado para manejar un 500. En otras palabras, configuré http: // localhost: 8080/KataIt/cool/something para lanzar una NullPointerException y la única diferencia que veo entre el código es una excepción y no es: errors.GrailsExceptionResolver null y luego el seguimiento de la pila y cierta información de reenvío que es la misma independientemente de si está lanzando un NPE o no: filter.UrlMappingsFilter URI coincidente [/ cool/algo] a mapeo de URL [/ (*)/(*)? /(*)?], Reenviando a [/grails/cool/something.dispatch] con .. finneycanhelp