Projet

Général

Profil

0001-make-it-possible-to-send-crashes-to-sentry-3527.patch

Frédéric Péters, 03 septembre 2013 17:51

Télécharger (2,28 ko)

Voir les différences:

Subject: [PATCH] make it possible to send crashes to sentry (#3527)

 wcs/qommon/publisher.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
wcs/qommon/publisher.py
46 46
    except ImportError:
47 47
        ET = None
48 48

  
49
try:
50
    import raven
51
except ImportError:
52
    raven = None
53

  
49 54
from quixote.publish import Publisher, get_request, get_response, get_publisher, redirect
50 55
from http_request import HTTPRequest
51 56
from http_response import HTTPResponse, AfterJob
......
235 240
                        exc_type, exc_value,
236 241
                        tb)
237 242

  
243
        self.notify_sentry(exc_tuple, request=self.get_request(),
244
                context=context)
245

  
238 246
        try:
239 247
            self.logger.log_internal_error(error_summary, plain_error_msg)
240 248
        except socket.error:
......
245 253
            # this could happen on file descriptor exhaustion
246 254
            pass
247 255

  
256
    def notify_sentry(self, exc_tuple, request=None, context=None):
257
        if not self.get_site_option('sentry-dsn'):
258
            return
259

  
260
        client = raven.Client(self.get_site_option('sentry-dsn'))
261
        extra = {}
262
        tags = {}
263
        if context:
264
            extra['context'] = context
265
        if request:
266
            extra['request'] = request.dump()
267
            tags['url'] = request.get_url()
268

  
269
        client.captureException(exc_tuple, extra=extra, tags=tags)
270

  
248 271
    def finish_successful_request(self):
249 272
        Publisher.finish_successful_request(self)
250 273
        self.statsd.increment('successful-request')
......
260 283

  
261 284
        (exc_type, exc_value, tb) = sys.exc_info()
262 285

  
286
        self.notify_sentry((exc_type, exc_value, tb), request)
287

  
263 288
        if exc_type is NotImplementedError:
264 289
            get_response().set_header('Content-Type', 'text/html') # set back content-type
265 290
            return template.error_page(
266
-