2012-03-06 18 views
5

इससे पहले पूछा गया है, लेकिन मेरे पास कोई भी खोज नहीं है। मैं सभी क्लाइंट-साइड obfuscated त्रुटियों/ढेर निशान पकड़ने और उन्हें डीबगिंग के लिए सर्वर पर भेजने के लिए एक रास्ता तलाश रहा हूँ। मैंने खिड़की का उपयोग कर जावास्क्रिप्ट के लिए इसके बारे में कुछ देखा। आतंक, लेकिन मैं जीडब्ल्यूटी के साथ ऐसा करने का एक तरीका ढूंढ रहा हूं, और उसके बाद एक गैर-obfuscated स्टैक ट्रेस प्रदर्शित करें।जीडब्ल्यूटी: क्लाइंट-साइड त्रुटियों/सर्वर पर स्टैक निशान भेजें?

कोई भी यह कैसे जानता है? धन्यवाद!

संपादित करें:

GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() { 
     @Override 
     public void onUncaughtException(Throwable e) { 
      log.log(Level.SEVERE, e.getMessage(), e); 
     } 
    }); 

कि डिफ़ॉल्ट लॉगर अब gwt के साथ शामिल उपयोग कर रहा है: कई घंटे के लिए इस पर काम कर के बाद, मैं लॉग के माध्यम से 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-लॉग से कुछ है, जो लगता है इससे पहले कि यह GWT एसडीके में लागू किया गया था जैसे कि यह है पाया: http://code.google.com/p/gwt-log/wiki/GettingStarted#Override_the_default_URL_which_the_RemoteLogger_connects_to

मैंने उपर्युक्त लिंक से निर्देशों का पालन किया, पैकेज नाम अपडेट किया और क्या नहीं। मैं निम्नलिखित तर्क के साथ अब संकलन: -deploy युद्ध/वेब-INF//

तैनात और यह मेरा 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> 

अंतिम परिणाम है कि मैं त्रुटियों मिलता है , वे सिर्फ डी-obfuscated नहीं हैं। मैं क्या गलत कर रहा हूं?

उत्तर

7

initParamRequestFactoryServlet के लिए है। RemoteLoggingServiceImpl के साथ आप इसे setSymbolMapsDirectory विधि पर कॉल करना चाहते हैं; आम तौर पर servlet subclassing और कन्स्ट्रक्टर या init विधि से विधि बुलाकर।

+0

रुको, तो क्या मैं अपने लॉग को RequestFactoryServlet के साथ deobfuscate कर सकता हूं? – spierce7

+1

@ spierce7: आपको अपने gwt.xml में init पैरामीटर की आवश्यकता नहीं है। बस अपने gwt.xml में '' जोड़ें। यदि आप डिफ़ॉल्ट स्थान का उपयोग करते हैं, तो भी तैनाती आवश्यक नहीं है, क्योंकि आप –

+0

@ हिल्ब्रैंड बॉवकंप हे, आपकी टिप्पणी के लिए धन्यवाद कर रहे हैं। मेरे पास gwt.xml में एक init paramater नहीं है। सेट-प्रॉपर्टी-नाम = "कंपाइलर क्या है।stackMode "प्रतिस्थापित करें? मुझे यकीन नहीं है कि मैं समझता हूं। मुझे अभी भी रिमोट लॉजिंग सर्टलेट को सही करने की आवश्यकता है? संपादित करें: तो compiler.stackMode प्रॉपर्टी रिकॉर्डलाइन को बदलती है और रिकॉर्डफाइलनाम? – spierce7

3

जीडब्ल्यूटी ने detailed in the documentation के रूप में लॉगिंग के लिए समर्थन में बनाया है। sending log messages from the client to the server के लिए भी समर्थन है।

यदि आप सभी अपवादों को पकड़ना चाहते हैं तो आपको ब्राउज़र विशिष्ट कोड लिखना पड़ सकता है। उदाहरण के लिए, मोज़िला में window.onerror ईवेंट है, हालांकि, मुझे नहीं लगता कि यह मानक है।

+0

कुछ और खोज करने के बाद, ऐसा लगता है कि GWT.setUncaughtExceptionHandler के साथ ऐसा करने का कोई तरीका हो सकता है, लेकिन फिर मैं त्रुटि को वापस सर्वर (AppEngine), unobfuscated, और लॉग में प्रदर्शित कैसे करूं? – spierce7

+0

उपरोक्त मेरे उत्तर में दिए गए लिंक देखें ... एक gwt.logging.simpleRemoteHandler को अपनी लॉगिंग कॉन्फ़िगरेशन में जोड़ें। – ColinE

+0

यह सही है, लेकिन यह उससे भी ज्यादा हो गया है। मुझे रिमोट लॉग प्राप्त करने के लिए हमें दिए गए रिमोट लॉगिंग सर्वलेट को कार्यान्वित करना था, और उस लिंक में उल्लिखित विकल्पों का एक समूह कॉन्फ़िगर करना था, ताकि मेरे ऐप के ऊपरी बाईं ओर एक लॉग बॉक्स पॉप न हो । मुझे पता नहीं क्यों प्रलेखन इतना अपूर्ण है। वैसे भी, मुझे सब कुछ मिल गया है, डी-ओबफ्यूशन के अलावा। अब तक आपकी मदद के लिए धन्यवाद! – spierce7

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