U 췀g}%@s<ddlZddlmZmZddlmZddlZddlmZmZmZm Z ddl m Z ddl m Z e rddlmZddlmZdd l mZdd l mZdd l mZejZejZejd ejd ejdejdejdejdejdejdiZedddgZ ddZ!Gddde Z"Gdddej#Z$Gddde$Z%e%Z&Gddde$Z'dS)N)datetimetimezone)fnmatch) to_stringevent_from_exceptioncurrent_stacktracecapture_internal_exceptions) Integration) TYPE_CHECKING)MutableMapping) LogRecord)Any)Dict)OptionalZnotsetdebuginfowarningerrorfatalzsentry_sdk.errorszurllib3.connectionpoolzurllib3.connectioncCst|dS)a|This disables recording (both in breadcrumbs and as events) calls to a logger of a specific name. Among other uses, many of our integrations use this to prevent their actions being recorded as breadcrumbs. Exposed to users as a way to quiet spammy loggers. :param name: The name of the logger to ignore (same string you would pass to ``logging.getLogger``). N)_IGNORED_LOGGERSadd)namerM/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/integrations/logging.py ignore_logger/s rc@s2eZdZdZeefddZddZeddZ dS) LoggingIntegrationloggingcCs8d|_d|_|dk r t|d|_|dk r4t|d|_dS)N)level)_handler_breadcrumb_handlerBreadcrumbHandler EventHandler)selfrZ event_levelrrr__init__@s  zLoggingIntegration.__init__cCsL|jdk r$|j|jjkr$|j||jdk rH|j|jjkrH|j|dSN)rlevelnorhandlerr"recordrrr_handle_recordKs  z!LoggingIntegration._handle_recordcs tjjfdd}|tj_dS)Nc sLt}z||WS|dk rF|j|krFtt}|dk rF||XdSr$)rr sentry_sdk get_clientZget_integrationrr))r"r(Zignored_loggersZ integrationZold_callhandlersrrsentry_patched_callhandlers[szBLoggingIntegration.setup_once..sentry_patched_callhandlers)rLogger callHandlers)r-rr,r setup_onceVs zLoggingIntegration.setup_onceN) __name__ __module__ __qualname__ identifier DEFAULT_LEVELDEFAULT_EVENT_LEVELr#r) staticmethodr0rrrrr=s   rc@s,eZdZedZddZddZddZdS) _BaseHandler)argscreatedexc_infoexc_textfilenamefuncName levelnamer%Zlinennolinenomessagemodulemsecsmsgrpathnameprocess processNamerelativeCreatedstacktagsZtaskNamethread threadName stack_infocCs tD]}t|j|rdSqdS)z'Prevents ignored loggers from recordingFT)rrr)r"r(loggerrrr _can_records z_BaseHandler._can_recordcCst|j|jr|jndS)N)LOGGING_TO_EVENT_LEVELgetr%r?lowerr'rrr_logging_to_event_levelsz$_BaseHandler._logging_to_event_levelcsfddt|DS)Ncs4i|],\}}|jkrt|tr*|ds||qS)_)COMMON_RECORD_ATTRS isinstancestr startswith).0kvr"rr s   z3_BaseHandler._extra_from_record..)varsitemsr'rr]r_extra_from_records  z_BaseHandler._extra_from_recordN)r1r2r3 frozensetrVrOrTrarrrrr8rs r8c@s eZdZdZddZddZdS)r!z A logging handler that emits Sentry events for each log record Note that you do not have to use this class if the logging integration is enabled, which it is by default. c Cs2t"||||W5QRSQRXdSr$rformat_emitr'rrremits zEventHandler.emitc CsR||sdSt}|s"dS|j}|jrX|jddk rXt|j|dddd\}}nd|jrl|jddksr|jri}i}t,dt |d|dd d dd gi|d <W5QRXni}i}||d <| |}|dkr||d<|j |d<|j dko|j dk}|r|j d}|dd|d<nt|j |j d|d<|||d<tj||ddS)NrrT)typeZhandled)client_optionsZ mechanismvaluesinclude_local_variablesmax_value_length)rjrkF)Z stacktraceZcrashedcurrentthreads log_record>rrrrcriticalrrrNz py.warningsz%sr)rAparamsZlogentryextrahint)rOr*r+Z is_activeoptionsr;rrMrrrTrrDr9rraZ capture_event) r"r(clientrheventrsrZ%record_caputured_from_warnings_modulerDrrrres^       zEventHandler._emitN)r1r2r3__doc__rfrerrrrr!sr!c@s(eZdZdZddZddZddZdS) r z A logging handler that records breadcrumbs for each log record. Note that you do not have to use this class if the logging integration is enabled, which it is by default. c Cs2t"||||W5QRSQRXdSr$rcr'rrrrfs zBreadcrumbHandler.emitcCs*||sdStj||d|iddS)Nrnrr)rOr*Zadd_breadcrumb_breadcrumb_from_recordr'rrrres  zBreadcrumbHandler._emitcCs.d|||j|jt|jtj||dS)Nlog)rgrcategoryrA timestampdata) rTrrAr fromtimestampr:rutcrar'rrrrxsz)BreadcrumbHandler._breadcrumb_from_recordN)r1r2r3rwrfrerxrrrrr s r )(rrrrr*Zsentry_sdk.utilsrrrrZsentry_sdk.integrationsr typingr collections.abcr r r rrINFOr5ERRORr6NOTSETDEBUGWARNWARNINGFATALCRITICALrQsetrrrHandlerr8r!Z SentryHandlerr rrrrsP        57[