o
    Df                     @  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
mZ ddlmZ 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 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   )	safe_reprsafe_strmaybe_evaluate)cached_property)LogMixin
LOG_LEVELSget_loglevelsetup_loggingFATALDISABLE_TRACEBACKSc                 C  s,   t | tr
t| } | js| t  | S )zGet logger by name.)
isinstancestrlogging	getLoggerhandlers
addHandlerNullHandler)logger r   B/home/ubuntu/webapp/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_format.   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   debug8      zLogMixin.debugc                 O  r-   r.   )r/   r   INFOr1   r   r   r   info;   r5   zLogMixin.infoc                 O  r-   r.   )r/   r   WARNr1   r   r   r   warn>   r5   zLogMixin.warnc                 O  &   | dd | jtjg|R i |S Nexc_infoT)
setdefaultr/   r   ERRORr1   r   r   r   errorA      zLogMixin.errorc                 O  r:   r;   )r=   r/   r   CRITICALr1   r   r   r   criticalE   r@   zLogMixin.criticalc                 C  s   | j  d| S )Nz - )logger_name)r2   textr   r   r   annotateI   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>R   s    z LogMixin.log.<locals>.<listcomp>z%rz%s )r   popr   isEnabledForr/   lenr   r   rE   replacelistr,   joinmapr   )r2   severityr'   r3   r/   expandr   r   r   r/   L   s&   zLogMixin.logc                 C  s
   t | jS r.   )r   rC   r2   r   r   r   r   [   s   
zLogMixin.get_loggerc                 C  s   | j | |S r.   )r   rK   r   r2   r   r   r   r   is_enabled_for^   s   zLogMixin.is_enabled_forc                 C  s   t |tjs
t| S |S r.   )r   numbersIntegralr   rT   r   r   r   r   a   s   zLogMixin.get_loglevelc                 C  s   |   S r.   )r   rS   r   r   r   r   f      zLogMixin.loggerc                 C  s   | j jS r.   )	__class____name__rS   r   r   r   rC   j   rX   zLogMixin.logger_nameN)rZ   
__module____qualname____doc__r4   r7   r9   r?   rB   rE   r/   r   rU   r   r	   r   propertyrC   r   r   r   r   r
   5   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 r.   )_logger_name_logger)r2   namer   r   r   r   __init__q   s   
zLog.__init__c                   s   | j r| j S t  S r.   )ra   superr   rS   rY   r   r   r   u   s   
zLog.get_loggerc                 C  s   | j S r.   )r`   rS   r   r   r   rC   z   s   zLog.logger_namer.   )rZ   r[   r\   rc   r   r^   rC   __classcell__r   r   re   r   r_   o   s
    
r_   c                 C  s^   t  }t| pd} |r|ntj}|js-t|drt |}nt|}|	| |
|  |S )zSetup logging.r>   write)r   r   r   sys
__stderr__r   hasattrStreamHandlerr   r   setLevel)loglevellogfiler   handlerr   r   r   r      s   


r   r.   )NN)"r]   
__future__r   r   rV   osrh   logging.handlersr   utils.encodingr   r   utils.functionalr   utils.objectsr	   __all__dict_nameToLevelr   update_levelToNamer=   r   environr&   r   r   r   r#   r,   r
   r_   r   r   r   r   r   <module>   s.    
	
: