2012-09-26 11 views
25

हमारे रेल ऐप में हम सही एपीआई प्रतिक्रिया देने के लिए एप्लिकेशन कंट्रोलर पर अधिकांश अपवादों को बचाते हैं, लेकिन फिर भी त्रुटिकोलेक्टर का उपयोग करके त्रुटियों को ट्रैक करना चाहते हैं। क्या न्यूरेलिक में मैन्युअल रूप से त्रुटि भेजने का कोई तरीका है?क्या न्यूरेलिक त्रुटि को मैन्युअल रूप से धक्का देने का कोई तरीका है?

उत्तर

6

सुनिश्चित नहीं हैं कि अगर यह उपयोग करने के लिए जिस तरह से अनुशंसा की जाती है, लेकिन यह पूरी तरह से काम करता है:

NewRelic::Agent.agent.error_collector.notice_error(exception) 
+16

मैं न्यू अवशेष पर काम करते हैं। हालांकि यह विधि आज काम कर सकती है, यह हमारे सार्वजनिक एपीआई का हिस्सा नहीं है, और इस प्रकार इसका उपयोग नहीं किया जाना चाहिए - यह भविष्य में किसी भी बिंदु पर बदल सकता है। उपयोग करने के लिए सही विधि 'न्यूरेलिक :: एजेंट.नोटिस_error' है, जैसा कि उत्तर की प्रतिक्रिया में उल्लेख किया गया है। कुछ भी जो हमारे सार्वजनिक [एपीआई दस्तावेज़] में दस्तावेज नहीं है [http://rubydoc.info/github/newrelic/rpm) एक ही श्रेणी में आता है। – grumbler

35

मैं क्या नई अवशेष एजेंट कोड में देख के आधार पर आप कर सकते हैं

NewRelic::Agent.notice_error(exception, options)

मेरे पास है इसका परीक्षण किया और यह मेरे स्टैक

पर चल रहा है यह नियंत्रक में एक उदाहरण है:

त्रुटि देखें और त्रुटि मीट्रिक बढ़ाने के लिए API कॉल की
class ApplicationController < ActionController::Base 
    rescue_from ActiveRecord::RecordInvalid, with: :rescue_invalid_record 

    private 

    def rescue_invalid_record(exception) 
    NewRelic::Agent.notice_error(exception) 
    end 
end 
+3

यहां इसके लिए प्रलेखन है: http://rdoc.info/github/newrelic/rpm/NewRelic/Agent:notice_error यह मूल रूप से उनके समाधान में शामिल इगोर विधि के लिए एक उपनाम है, सिवाय इसके कि यह अपवाद के बजाय शून्य लौटाता है। इसलिए जब यह थोड़ा अलग व्यवहार करता है, यह अनिवार्य रूप से वही बात और बहुत कम वर्बोज़ है। –

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

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