2012-09-26 9 views
25

En nuestra aplicación Rails rescatamos la mayoría de las excepciones en ApplicationController para dar una respuesta API correcta, pero aún queremos seguir los errores que ocurren usando ErrorCollector. ¿Hay alguna forma de enviar el error manualmente a NewRelic?¿Hay forma de presionar el error NewRelic manualmente?

Respuesta

6

No está seguro de si se trata de manera de utilizar recomendable, pero esto funciona perfectamente:

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

Trabajo en New Relic. Si bien este método puede funcionar hoy, * no * es parte de nuestra API pública y, por lo tanto, no debe utilizarse; puede cambiar en cualquier momento en el futuro. El método correcto para usar es 'NewRelic :: Agent.notice_error', como se indica en la respuesta de nort. Todo lo que no esté documentado en nuestros [documentos API] públicos (http://rubydoc.info/github/newrelic/rpm) pertenece a la misma categoría. – grumbler

35

Sobre la base de lo que veo en el código de agente de New Relic que puede hacer

NewRelic::Agent.notice_error(exception, options)

tengo probado esto y tengo esto ejecutándose en mi pila

Aquí hay un ejemplo en un controlador:

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

Aquí está la documentación para esto: http://rdoc.info/github/newrelic/rpm/NewRelic/Agent:notice_error Básicamente es un alias del método Igor incluido en su solución, excepto que devuelve nil en lugar de la excepción. Entonces, aunque se comporta de una manera un tanto diferente, es esencialmente lo mismo y mucho menos detallado. –

Cuestiones relacionadas