U \@sddlmZddlZddlZddlmZddlmZmZm Z m Z ddl m Z ejZejZedgZddZGd d d e Zd d Zd dZddZedZddZGdddeje Z!e!Z"Gdddeje Z#dS))absolute_importN)Hub) to_stringevent_from_exceptioncurrent_stacktracecapture_internal_exceptions) Integrationzsentry_sdk.errorscCst|dS)zThis disables the breadcrumb integration for a logger of a specific name. This primary use is for some integrations to disable breadcrumbs of this integration. N)_IGNORED_LOGGERSadd)namer /logging.py ignore_loggersrc@s2eZdZdZeefddZddZeddZ dS) LoggingIntegrationloggingcCs8d|_d|_|dk r t|d|_|dk r4t|d|_dS)N)level)_handler_breadcrumb_handlerBreadcrumbHandler EventHandler)selfrZ event_levelr r r __init__'s  zLoggingIntegration.__init__cCsL|jdk r$|j|jjkr$|j||jdk rH|j|jjkrH|j|dSN)rlevelnorZhandlerrrecordr r r _handle_record2s  z!LoggingIntegration._handle_recordcs tjjfdd}|tj_dS)Nc s>z||WS|jtkr8tjt}|dk r8||XdSr)r r rcurrentZget_integrationrr)rrZ integrationZold_callhandlersr r sentry_patched_callhandlersBs   zBLoggingIntegration.setup_once..sentry_patched_callhandlers)rZLoggerZ callHandlers)rr rr setup_once=s zLoggingIntegration.setup_onceN) __name__ __module__ __qualname__Z identifier DEFAULT_LEVELDEFAULT_EVENT_LEVELrr staticmethodr r r r r r$s   rcCs |jtkSr)r r rr r r _can_recordSsr(cCs*dt|j|j|jtj|jt|dS)Nlog)ZtyrcategorymessageZ timestampdata)_logging_to_event_level levelnamer r+datetimeZ fromtimestampcreated_extra_from_recordr'r r r _breadcrumb_from_recordXs r2cCsddi||S)NZcriticalZfatal)getlower)r.r r r r-dsr-)argsr0r,exc_infoZexc_textfilenameZfuncNamer.rZlinennolinenor+moduleZmsecsmsgr pathnameZprocessZ processNameZrelativeCreatedstackZtagsthreadZ threadNamecCsddt|DS)NcSs(i|] \}}|tkr|ds||qS)_)COMMON_RECORD_ATTRS startswith).0kvr r r s  z&_extra_from_record..)varsitemsr'r r r r1s r1c@seZdZddZddZdS)rc Cs2t"||||W5QRSQRXdSrrformat_emitrr r r emits zEventHandler.emitc Cst|s dStj}|jdkr dSd}|jj}|jdk r`|jddk r`t|j|dddd\}}nN|jr|jddkri}d}t t|ddddg|d <W5QRXni}t |j |d <|j |d <t |j |jd |d <t||d<|j||ddS)NrrT)typeZhandled)client_optionsZ mechanismZ with_localsF)Z stacktraceZcrashedrZthreadsrZlogger)r+ZparamsZlogentryZextrahint)r(rrZclientZoptionsr6rrrr-r.r rr:r5r1Z capture_event)rrZhubrNrLZeventr r r rIs8     zEventHandler._emitNr!r"r#rJrIr r r r rsrc@seZdZddZddZdS)rc Cs2t"||||W5QRSQRXdSrrGrr r r rJs zBreadcrumbHandler.emitcCs(t|s dStjjt|d|iddS)NZ log_recordrM)r(rrZadd_breadcrumbr2rr r r rIs zBreadcrumbHandler._emitNrOr r r r rsr)$Z __future__rrr/Zsentry_sdk.hubrZsentry_sdk.utilsrrrrZsentry_sdk.integrationsrZ LogRecordZAnyZDictZOptionalINFOr$ZERRORr%setr rrr(r2r- frozensetr?r1ZHandlerobjectrZ SentryHandlerrr r r r s(     /  1