2011-01-25 2 views
10

В grails, как я могу добавить код в UrlMappings.groovy (ex: println), чтобы я мог выяснить, что такое URI запроса и какое отображение попадает (если есть)?grails и отладка UrlMappings

фон:

В этой ситуации есть два сервера, которые обслуживают разные вещи на основе расширения файла. Таким образом, двум серверам необходимо всегда видеть расширения файлов для обработки ошибок. В противном случае серверы запутываются, а 1 обслуживает 404 страницы вместо нашей 500 страниц.

Большая картинка включает в себя принятие ответа 500 из-за чего-то вроде исключения NullPointerException и отслеживания его через код, чтобы увидеть, что происходит.

Я добавил код, подобный следующему, который в http://jetlet.blogspot.com/2010/08/grails-exception-handling-with-response.html:

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

В тестировании этого я бросал NullPointerException (NPE) с целью. Вызывается обработка 500, и при вводе URL-адреса в адресную строку браузера отправляется 500 страниц. Однако при отправке формы на сервер и сбое кода обработки с NPE код обработки «500» не вызывается. URL-адрес в действии формы, похоже, заканчивается расширением. Итак, не знаете, почему разница в поведении между GET (URL-адрес браузера) и POST (подача формы).

Спасибо за понимание и мысли по отслеживанию этого!

+0

Извините, ваше слово довольно расплывчато для меня. Не могли бы вы дать более подробный пример? –

+0

Код для иллюстрации вашего вопроса будет очень приветствуем здесь – fabien7474

+0

Благодарим вас за интерес к этому вопросу и ваши ответы. В двух словах, когда я работаю локально на своей коробке с моим единственным сервером причала, все работает нормально. При отправке формы код, выдающий исключение NullPointerException, проходит через код обработки ошибок, как ожидалось. Когда не на моем ящике, но в более сложной среде, я получаю 404 страницы. Эта более сложная среда имеет 1 сервер, который ищет расширения в запросе, чтобы решить, передавать или не передавать запрос на сервер номер 2. На данный момент мне нужно, чтобы кто-то мог отслеживать, что происходит. – finneycanhelp

ответ

10

В вашем Config.groovy вы можете изменить настройки log4j для отображения URL событий, добавив

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

к существующим настройкам log4j. все это самая сложная настройка, поэтому ее можно настроить обратно, если это слишком много значит. Более подробную информацию вы можете найти в официальной документации по графу: http://grails.org/doc/latest/guide/3.%20Configuration.html

+1

Спасибо за регистрацию! Что странно, так это то, что я не вижу связанных журналов для обработки 500. Другими словами, я настроил http: // localhost: 8080/KataIt/cool/something, чтобы бросить исключение NullPointerException и единственное различие, которое я вижу между кодом, бросающим исключение и не является: errors.GrailsExceptionResolver null, а затем трассировка стека и некоторая информация пересылки, которая является одинаковой независимо от того, выбрали ли вы NPE или нет: filter.UrlMappingsFilter Совпадает с URI [/ cool/something] в URL mapping [/ (*)/(*)? /(*)?], Пересылка на [/grails/cool/something.dispatch] с .. finneycanhelp