ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ""" raven.contrib.django.handlers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. """ from __future__ import absolute_import import logging from raven.handlers.logging import SentryHandler as BaseSentryHandler from raven.utils import memoize class SentryHandler(BaseSentryHandler): def __init__(self, *args, **kwargs): # TODO(dcramer): we'd like to avoid this duplicate code, but we need # to currently defer loading client due to Django loading patterns. self.tags = kwargs.pop('tags', None) logging.Handler.__init__(self, level=kwargs.get('level', logging.NOTSET)) @memoize def client(self): # Import must be lazy for deffered Django loading from raven.contrib.django.models import client return client def _emit(self, record): request = getattr(record, 'request', None) return super(SentryHandler, self)._emit(record, request=request)