2011-01-25 15 views
10

grails में, मैं urlMappings.groovy (ex: println) में कुछ कोड कैसे जोड़ सकता हूं ताकि मैं यह पता लगा सकूं कि यूआरआई क्या अनुरोध है और कौन सा मैपिंग हिट हो रहा है (यदि कोई है)?grails और डिबगिंग UrlMappings

पृष्ठभूमि:

इस स्थिति में, वहाँ दो सर्वर जो फाइल एक्सटेंशन के आधार पर अलग अलग बातें की सेवा कर रहे हैं। इसलिए, दो सर्वरों को हमेशा जारी रखने के लिए त्रुटि प्रसंस्करण के लिए फ़ाइल एक्सटेंशन देखने की आवश्यकता है। अन्यथा, सर्वर भ्रमित हो जाते हैं और 1 हमारे 500 पेज के बजाय 404 पेज परोसता है।

बड़ी तस्वीर में NullPointerException की तरह कुछ 500 प्रतिक्रियाएं शामिल होती हैं और यह देखने के लिए कोड के माध्यम से इसका पता लगाता है कि क्या हो रहा है।

मैं जिसके बाद http://jetlet.blogspot.com/2010/08/grails-exception-handling-with-response.html पर है की तरह कोड कहा:

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

इस परीक्षण में, मैंने जान-बूझकर एक NullPointerException (एनपीई) फेंक रहा हूँ। 500 हैंडलिंग को कॉल किया जाता है और ब्राउजर के एड्रेस बार में यूआरएल में प्रवेश करते समय 500 पेज परोसा जाता है। हालांकि, सर्वर पर एक फॉर्म पोस्ट करते समय और एनपीई के साथ प्रसंस्करण कोड को उद्देश्य पर उड़ाते समय, "500" हैंडलिंग कोड नहीं कहा जाता है। प्रपत्र की कार्रवाई में यूआरएल एक एक्सटेंशन के साथ समाप्त होता है। तो, सुनिश्चित नहीं है कि जीईटी (ब्राउज़र यूआरएल) और POST (फॉर्म सबमिशन) के बीच व्यवहार में अंतर क्यों है।

इस पर नज़र रखने के लिए अंतर्दृष्टि और विचारों के लिए धन्यवाद!

+0

क्षमा करें, आपका शब्द मेरे लिए अस्पष्ट है। क्या आप अधिक विस्तृत उदाहरण दे सकते हैं? –

+0

कोड को आपके प्रश्न का वर्णन करने के लिए यहां बहुत स्वागत किया जाएगा – fabien7474

+0

इस प्रश्न और आपके उत्तरों में आपकी रूचि के लिए धन्यवाद। संक्षेप में, जब मैं अपने एकल जेटी सर्वर के साथ अपने बॉक्स पर स्थानीय रूप से काम कर रहा हूं तो सब कुछ ठीक काम करता है। एक फॉर्म सबमिट करते समय, एक NullPointerException फेंकने वाला कोड त्रुटि प्रसंस्करण कोड के माध्यम से अपेक्षित होता है। मेरे बॉक्स पर नहीं, लेकिन अधिक व्यस्त वातावरण में, मुझे 404 पृष्ठ मिलता है। इस अधिक शामिल वातावरण में 1 सर्वर है जो यह तय करने के अनुरोध में एक्सटेंशन की तलाश करता है कि सर्वर नंबर 2 के माध्यम से अनुरोध पास करना है या नहीं। इस बिंदु पर, मुझे किसी के होने का पता लगाने में सक्षम होना चाहिए। – finneycanhelp

उत्तर

10

अपने Config.groovy आप यूआरएल मानचित्रण ईवेंट के लिए अपनी log4j सेटिंग्स संशोधित कर सकते में

all 'org.codehaus.groovy.grails.web.mapping' 
अपने मौजूदा log4j सेटिंग के

जोड़कर। सभी सबसे वर्बोज़ सेटिंग हैं इसलिए यदि आपको बहुत अधिक देना शुरू होता है तो इसे वापस ट्यून किया जा सकता है। आप यहां आधिकारिक grails दस्तावेज़ीकरण में अधिक जानकारी प्राप्त कर सकते हैं: http://grails.org/doc/latest/guide/3.%20Configuration.html

+1

लॉगिंग के लिए धन्यवाद! अजीब बात यह है कि मुझे 500 को संभालने के लिए संबंधित लॉगिंग नहीं दिखाई दे रही है। दूसरे शब्दों में, मैंने http: // localhost: 8080/kataIt/cool/nullPointerException को फेंकने के लिए कुछ और एक अपवाद फेंकने वाले कोड के बीच एकमात्र अंतर देखा है और नहीं है: त्रुटियां। GrailsExceptionResolver शून्य और फिर स्टैक ट्रेस और कुछ अग्रेषण जानकारी जो कि आप एनपीई फेंक रहे हैं या नहीं, इस पर भरोसा करते हैं: filter.UrlMappingsFilter यूआरएल मैपिंग के लिए यूआरआई [/ ठंडा/कुछ] मिलान [/ (*)/(*)? /(*)?], [/grails/cool/something.dispatch] के साथ अग्रेषित .. finneycanhelp

संबंधित मुद्दे