B Yp@sdZddlmZddlmZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlmZddlmZed Zefd d ZGd d d ejeZdS)z raven.handlers.logging ~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. )absolute_import)print_functionN) string_types iteritems text_type)Client) to_string)iter_stack_frames)stacknamemodulefuncNameargsmsglevelnoexc_textexc_infodatacreated levelnamemsecsrelativeCreatedtagsmessagecCsi}t|dd}t|ts,|r(d|i}ni}xPtt|D]@\}}||krLq:|drXq:d|krr|dkrr|||<q:|||<q:W||fS)Nr_.)ZculpritZ server_nameZ fingerprint)getattr isinstancedictrvars startswith)recordreservedrextrakvr&G/opt/alt/python37/lib/python3.7/site-packages/raven/handlers/logging.py extract_extras      r(c@s4eZdZddZddZddZddZd d Zd S) SentryHandlercOs|dt}t|dkrh|d}t|tr@|fd|i||_qt|trR||_qtd|jj|fn d|kr||d|_n ||||_| dd|_ t j j ||dt jd dS) NZ client_clsrZdsnzSThe first argument to %s must be either a Client instance or a DSN, got %r instead.clientrlevel)r,)getrlenrrr+ ValueError __class____name__poprloggingHandler__init__NOTSET)selfrkwargsr+argr&r&r'r55s      zSentryHandler.__init__cCs|jdkp|jd S)Nraven)z sentry.errorszraven.)r r )r7r!r&r&r' can_recordJs zSentryHandler.can_recordcCsy6||||s.tt|jtjddS||Stk r|j j rPtdtjdtt|j tjdttt tjdYnXdS)N)filez>Top level Sentry exception caught - failed creating log record)formatr;printrrsysstderr_emit Exceptionr+Zraise_send_errorsr traceback format_exc)r7r!r&r&r'emitPs    zSentryHandler.emitc Cst|}g}d}d}x~|D]v}t|ttfr6|\}}n ||j}}|st|di} | dd} |r||dr|| ds|d}n| }q|||fqW|s|S|S)NF f_globalsr1r3T)listrtuplef_linenorr-r append) r7r r!framesstartedZlast_moditemframelinenorG module_namer&r&r'_get_targetted_stackbs(      z"SentryHandler._get_targetted_stackc Kst|\}}t|dd}|dkr&t}|r6|||}tj|j}d}d|ji}yt|j |d<Wn*t k rt |j dd|d<YnXyt|j |d<Wn*t k rt |j dd|d<YnX|j rt|j r|j|} || jf|d }d |j i}|j|d <|j|d <i|d <} |jrB| |j| t|d i|||dd} |jj|f||||| d|S)Nr Tzraven.events.Messageparamsrr* formattedzraven.events.Exceptionrr,loggerr sample_rate)r rr#daterW)r(rr rRdatetimeutcfromtimestamprrrrUnicodeDecodeErrorreprrrallr+Z get_handlerupdatecapturerr rr2) r7r!r8rr#r rXZ event_typeZhandler_kwargshandlerrrWr&r&r'rAsD             zSentryHandler._emitN)r1 __module__ __qualname__r5r;rErRrAr&r&r&r'r)4s r))__doc__ __future__rrrYr3r?rCZraven.utils.compatrrrZ raven.baserZraven.utils.encodingrZraven.utils.stacksr frozensetZRESERVEDr(r4objectr)r&r&r&r's