
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    „á§\ƒ  ã                   @   sÒ   d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZ ejZejZedgƒZdd„ ZG d	d
„ d
eƒZdd„ Zdd„ Zdd„ ZedƒZdd„ ZG dd„ deje ƒZ!e!Z"G dd„ deje ƒZ#dS )é    )Úabsolute_importN)ÚHub)Ú	to_stringÚevent_from_exceptionÚcurrent_stacktraceÚcapture_internal_exceptions)ÚIntegrationzsentry_sdk.errorsc                 C   s   t  | ¡ dS )z­This 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_LOGGERSÚadd)Úname© r   úP/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations/logging.pyÚignore_logger   s    r   c                   @   s2   e Zd ZdZeefdd„Zdd„ Zedd„ ƒZ	dS )	ÚLoggingIntegrationÚloggingc                 C   s8   d | _ d | _|d k	r t|d�| _|d k	r4t|d�| _ d S )N)Úlevel)Ú_handlerÚ_breadcrumb_handlerÚBreadcrumbHandlerÚEventHandler)Úselfr   Zevent_levelr   r   r   Ú__init__'   s    zLoggingIntegration.__init__c                 C   sL   | j d k	r$|j| j jkr$| j  |¡ | jd k	rH|j| jjkrH| j |¡ d S ©N)r   Úlevelnor   Úhandler   ©r   Úrecordr   r   r   Ú_handle_record2   s    ÿþz!LoggingIntegration._handle_recordc                     s    t jj‰ ‡ fdd„} | t j_d S )Nc              	      s>   zˆ | |ƒW ¢S |j tkr8tj t¡}|d k	r8| |¡ X d S r   )r   r	   r   ÚcurrentZget_integrationr   r   )r   r   Zintegration©Zold_callhandlersr   r   Úsentry_patched_callhandlersB   s    
zBLoggingIntegration.setup_once.<locals>.sentry_patched_callhandlers)r   ZLoggerZcallHandlers)r    r   r   r   Ú
setup_once=   s    zLoggingIntegration.setup_onceN)
Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚDEFAULT_LEVELÚDEFAULT_EVENT_LEVELr   r   Ústaticmethodr!   r   r   r   r   r   $   s
   r   c                 C   s
   | j tkS r   )r   r	   ©r   r   r   r   Ú_can_recordS   s    r*   c                 C   s*   dt | jƒ| j| jtj | j¡t| ƒdœS )NÚlog)Útyr   ÚcategoryÚmessageÚ	timestampÚdata)Ú_logging_to_event_levelÚ	levelnamer   r.   ÚdatetimeÚfromtimestampÚcreatedÚ_extra_from_recordr)   r   r   r   Ú_breadcrumb_from_recordX   s    úr7   c                 C   s   ddi  |  ¡ |  ¡ ¡S )NZcriticalÚfatal)ÚgetÚlower)r2   r   r   r   r1   d   s    r1   )Úargsr5   r0   Úexc_infoZexc_textÚfilenameZfuncNamer2   r   ZlinennoÚlinenor.   ÚmoduleZmsecsÚmsgr   ÚpathnameÚprocessZprocessNameZrelativeCreatedÚstackZtagsÚthreadZ
threadNamec                 C   s   dd„ t | ƒ ¡ D ƒS )Nc                 S   s(   i | ] \}}|t kr| d ¡s||“qS )Ú_)ÚCOMMON_RECORD_ATTRSÚ
startswith)Ú.0ÚkÚvr   r   r   Ú
<dictcomp>‰   s
    
þ z&_extra_from_record.<locals>.<dictcomp>)ÚvarsÚitemsr)   r   r   r   r6   ‡   s    
þr6   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c              
   C   s2   t ƒ �" |  |¡ |  |¡W  5 Q R £ S Q R X d S r   ©r   ÚformatÚ_emitr   r   r   r   Úemit‘   s    
zEventHandler.emitc              	   C   sú   t |ƒsd S tj}|jd kr d S d }|jj}|jd k	r`|jd d k	r`t|j|dddœd�\}}nN|jrª|jd d krªi }d }tƒ �  t|d ƒdddœg|d	< W 5 Q R X ni }t	|j
ƒ|d
< |j|d< t|jƒ|jdœ|d< t|ƒ|d< |j||d� d S )Nr   r   T)ÚtypeZhandled)Úclient_optionsZ	mechanismZwith_localsF)Z
stacktraceZcrashedr   Úthreadsr   Úlogger)r.   ÚparamsZlogentryÚextra©Úhint)r*   r   r   ZclientÚoptionsr<   r   r   r   r1   r2   r   r   r@   r;   r6   Zcapture_event)r   r   ZhubrY   rS   Úeventr   r   r   rP   —   s8    
ý
ýÿ
zEventHandler._emitN©r"   r#   r$   rQ   rP   r   r   r   r   r   �   s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c              
   C   s2   t ƒ �" |  |¡ |  |¡W  5 Q R £ S Q R X d S r   rN   r   r   r   r   rQ   Å   s    
zBreadcrumbHandler.emitc                 C   s(   t |ƒsd S tjjt|ƒd|id� d S )NZ
log_recordrX   )r*   r   r   Zadd_breadcrumbr7   r   r   r   r   rP   Ë   s     ÿzBreadcrumbHandler._emitNr\   r   r   r   r   r   Ä   s   r   )$Ú
__future__r   r   r3   Zsentry_sdk.hubr   Zsentry_sdk.utilsr   r   r   r   Zsentry_sdk.integrationsr   Z	LogRecordZAnyÚDictÚOptionalÚINFOr&   ÚERRORr'   Úsetr	   r   r   r*   r7   r1   Ú	frozensetrF   r6   ZHandlerÚobjectr   ZSentryHandlerr   r   r   r   r   Ú<module>   s(   
	/ÿ	1