o
    fC                     @  s  d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZmZ ddlmZ dd	lmZ e
r@dd
lmZ dZeejZeej edej eejd ejdZdddZdd Zdd Z dddZ!G dd dZ"G dd de"Z#d ddZ$dS )!zLogging Utilities.    )annotationsN)WatchedFileHandler)TYPE_CHECKING   )	safe_reprsafe_strmaybe_evaluate)cached_property)Logger)LogMixin
LOG_LEVELSget_loglevelsetup_loggingFATALDISABLE_TRACEBACKSloggerstr | Loggerc                 C  s,   t | tr
t| } | js| t  | S )zGet logger by name.)
isinstancestrlogging	getLoggerhandlers
addHandlerNullHandler)r    r   </var/www/html/venv/lib/python3.10/site-packages/kombu/log.py
get_logger   s
   

r   c                 C  s   t | tr	t|  S | S )zGet loglevel by name.)r   r   r   )levelr   r   r   r   %   s   
r   c                 c  sH    |  d}t|dd  D ]\}}|r||d  sd n|d V  qd S )N%r   r   )split	enumerate)fmtpartsier   r   r   naive_format_parts,   s
   
 r&   c                 c  sR    |st tdn|}tt| D ]\}}||}|r!||| n|| V  qd S )N)sr)r   r   r!   r&   get)r"   argsfiltersindextypefiltr   r   r   safeify_format2   s   
r/   c                   @  sx   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zedd Zedd ZdS )r   z.Mixin that adds severity methods to any class.c                 O     | j tjg|R i |S N)logr   DEBUGselfr*   kwargsr   r   r   debug<      zLogMixin.debugc                 O  r0   r1   )r2   r   INFOr4   r   r   r   info?   r8   zLogMixin.infoc                 O  r0   r1   )r2   r   WARNr4   r   r   r   warnB   r8   zLogMixin.warnc                 O  &   | dd | jtjg|R i |S Nexc_infoT)
setdefaultr2   r   ERRORr4   r   r   r   errorE      zLogMixin.errorc                 O  r=   r>   )r@   r2   r   CRITICALr4   r   r   r   criticalI   rC   zLogMixin.criticalc                 C  s   | j  d| S )Nz - )logger_name)r5   textr   r   r   annotateM   s   zLogMixin.annotatec              	   O  s   t r|dd  | j|rZ| jj}t|dkrFt|d trFdd |dd  D }||| |d 	ddgt
t|d |R i |S | jj|| dtt|fi |S d S )	Nr?   r   r   c                 S  s   g | ]}t |qS r   r   ).0argr   r   r   
<listcomp>V   s    z LogMixin.log.<locals>.<listcomp>z%rz%s )r   popr   isEnabledForr2   lenr   r   rH   replacelistr/   joinmapr   )r5   severityr*   r6   r2   expandr   r   r   r2   P   s&   zLogMixin.logc                 C  s
   t | jS r1   )r   rF   r5   r   r   r   r   _   s   
zLogMixin.get_loggerc                 C  s   | j | |S r1   )r   rN   r   r5   r   r   r   r   is_enabled_forb   s   zLogMixin.is_enabled_forc                 C  s   t |tjs
t| S |S r1   )r   numbersIntegralr   rW   r   r   r   r   e   s   zLogMixin.get_loglevelc                 C  s   |   S r1   )r   rV   r   r   r   r   j      zLogMixin.loggerc                 C  s   | j jS r1   )	__class____name__rV   r   r   r   rF   n   r[   zLogMixin.logger_nameN)r]   
__module____qualname____doc__r7   r:   r<   rB   rE   rH   r2   r   rX   r   r
   r   propertyrF   r   r   r   r   r   9   s     
r   c                      s2   e Zd ZdddZ fddZedd Z  ZS )	LogNc                 C  s   || _ || _d S r1   )_logger_name_logger)r5   namer   r   r   r   __init__u   s   
zLog.__init__c                   s   | j r| j S t  S r1   )rd   superr   rV   r\   r   r   r   y   s   
zLog.get_loggerc                 C  s   | j S r1   )rc   rV   r   r   r   rF   ~   s   zLog.logger_namer1   )r]   r^   r_   rf   r   ra   rF   __classcell__r   r   rh   r   rb   s   s
    
rb   c                 C  s^   t  }t| pd} |r|ntj}|js-t|drt |}nt|}|	| |
|  |S )zSetup logging.rA   write)r   r   r   sys
__stderr__r   hasattrStreamHandlerr   r   setLevel)loglevellogfiler   handlerr   r   r   r      s   


r   )r   r   r1   )NN)%r`   
__future__r   r   rY   osrk   logging.handlersr   typingr   utils.encodingr   r   utils.functionalr	   utils.objectsr
   r   __all__dict_nameToLevelr   update_levelToNamer@   r   environr)   r   r   r   r&   r/   r   rb   r   r   r   r   r   <module>   s4    

	
: