U
    d                     @   s   d 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.    N)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   -/tmp/pip-unpacked-wheel-hqfrjlvz/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   sF   |  d}t|dd  D ]&\}}|r2||d  s6d n|d V  qd S )N%r   r   )split	enumerate)fmtpartsier   r   r   naive_format_parts&   s    
r"   c                 c   sP   |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typeZ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   s   | j tjf||S N)logr   DEBUGselfr&   kwargsr   r   r   debug6   s    zLogMixin.debugc                 O   s   | j tjf||S r+   )r,   r   INFOr.   r   r   r   info9   s    zLogMixin.infoc                 O   s   | j tjf||S r+   )r,   r   WARNr.   r   r   r   warn<   s    zLogMixin.warnc                 O   s    | dd | jtjf||S Nexc_infoT)
setdefaultr,   r   ERRORr.   r   r   r   error?   s    zLogMixin.errorc                 O   s    | dd | jtjf||S r6   )r8   r,   r   CRITICALr.   r   r   r   criticalC   s    zLogMixin.criticalc                 C   s   | j  d| S )Nz - )logger_name)r/   textr   r   r   annotateG   s    zLogMixin.annotatec              	   O   s   t r|dd  | j|r| jj}t|dkrt|d trdd |dd  D }||| |d 	ddft
t|d ||S | jj|| dtt|f|S d S )	Nr7   r   r   c                 S   s   g | ]}t |qS r   r   ).0argr   r   r   
<listcomp>P   s     z LogMixin.log.<locals>.<listcomp>z%rz%s )r   popr   isEnabledForr,   lenr   r   r?   replacelistr*   joinmapr   )r/   Zseverityr&   r0   r,   expandr   r   r   r,   J   s&     zLogMixin.logc                 C   s
   t | jS r+   )r   r=   r/   r   r   r   r   Y   s    zLogMixin.get_loggerc                 C   s   | j | |S r+   )r   rE   r   r/   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
   rM   r   r   r   r   _   s    zLogMixin.get_loglevelc                 C   s   |   S r+   )r   rL   r   r   r   r   d   s    zLogMixin.loggerc                 C   s   | j jS r+   )	__class____name__rL   r   r   r   r=   h   s    zLogMixin.logger_nameN)rR   
__module____qualname____doc__r1   r3   r5   r:   r<   r?   r,   r   rN   r   r   r   propertyr=   r   r   r   r   r	   3   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)r/   namer   r   r   r   __init__o   s    zLog.__init__c                    s   | j r| j S t  S r+   )rY   superr   rL   rQ   r   r   r   s   s    zLog.get_loggerc                 C   s   | j S r+   )rX   rL   r   r   r   r=   x   s    zLog.logger_name)N)rR   rS   rT   r[   r   rV   r=   __classcell__r   r   r]   r   rW   m   s   
rW   c                 C   s^   t  }t| pd} |r|ntj}|jsZt|dr>t |}nt|}|	| |
|  |S )zSetup logging.r9   write)r   r   r   sys
__stderr__r   hasattrStreamHandlerr   r   setLevel)Zloglevellogfiler   handlerr   r   r   r   }   s    


r   )N)NN) rU   r   rO   osr`   logging.handlersr   Zutils.encodingr   r   Zutils.functionalr   Zutils.objectsr   __all__dict_nameToLevelr
   update_levelToNamer8   r   environr%   r   r   r   r"   r*   r	   rW   r   r   r   r   r   <module>   s*   
	
: