U
    L¬÷dy  ã                   @   sÌ   d dl Zd dlZd dlZd dlZd dlZd dlZd dlZd dlZej	Z	ej
Z
ejZejZejZejZejZejZdZejej_edfdd„Zdd„ Zddd	„Zdd
d„Zddd„Zdd„ Zdd„ Zeƒ  dS )é    Nz6%(asctime)s - %(filename)s[%(levelname)s]: %(message)sc                 C   sŒ   |st  t¡}t  ¡ }|jD ]6}t|dƒrt|jdƒr|jjdkr| | ¡  d S qt  	t
j¡}| |¡ | | ¡ | |¡ | | ¡ d S )NÚstreamÚnamez<stderr>)ÚloggingÚ	FormatterÚDEF_CON_FORMATÚ	getLoggerÚhandlersÚhasattrr   r   ÚsetLevelÚStreamHandlerÚsysÚstderrZsetFormatterÚ
addHandler)ÚlevelZ	formatterÚrootZhandlerZconsole© r   ú//usr/lib/python3/dist-packages/cloudinit/log.pyÚsetupBasicLogging%   s    





r   c              	   C   sP   | sd S | j D ]2}t|tjƒrz| ¡  W q tk
r>   Y qX qt| jƒ d S ©N)r   Ú
isinstancer   r   ÚflushÚIOErrorÚflushLoggersÚparent)r   Úhr   r   r   r   6   s    
r   é#   c                    s$   t  ˆ d¡ ‡ fdd„}|t j_d S )NZ
DEPRECATEDc                    s    |   ˆ ¡r| jˆ ||f|Ž d S r   )ZisEnabledForZ_log)ÚselfÚmessageÚargsÚkwargs©Úlvlr   r   Ú
deprecatedE   s    
z+defineDeprecationLogger.<locals>.deprecated)r   ZaddLevelNameZLoggerr"   )r!   r"   r   r    r   ÚdefineDeprecationLoggerB   s    r#   c              	   C   s>  | si } g }|   d¡}|r4t|tƒr4| t|ƒ¡ nhd| krœ| d D ]V}t|tƒr^| |¡ qDt|tjjƒrŒdd„ |D ƒ}| d |¡¡ qD| t|ƒ¡ qDtƒ  d}|D ]Z}z>|d7 }| 	d¡rÐt
j |¡rÐn
t |¡}tj |¡ W  d S  tk
r   Y qªX qª|   d	d
¡}tj d| ¡ |r:tj d¡ tƒ  d S )NZlogcfgÚlog_cfgsc                 S   s   g | ]}t |ƒ‘qS r   )Ústr)Ú.0Úcr   r   r   Ú
<listcomp>\   s     z setupLogging.<locals>.<listcomp>Ú
r   é   ú/Z	log_basicTz0WARN: no logging configured! (tried %s configs)
zSetting up basic logging...
)Úgetr   r%   ÚappendÚcollectionsÚabcÚIterableÚjoinr#   Ú
startswithÚosÚpathÚisfileÚioÚStringIOr   ZconfigZ
fileConfigÚ	Exceptionr   r   Úwriter   )Zcfgr$   Zlog_cfgZa_cfgZcfg_strZam_triedZbasic_enabledr   r   r   ÚsetupLoggingL   sB    


ÿr:   Ú	cloudinitc                 C   s
   t  | ¡S r   )r   r   )r   r   r   r   r   …   s    r   c                 C   sR   | sdS t | jƒ}|D ]}| ¡  | ¡  |  |¡ q|  t¡ |  t 	¡ ¡ dS )z§Remove all current handlers, unset log level and add a NullHandler.

    (Adding the NullHandler avoids "No handlers could be found for logger XXX"
    messages.)
    N)
Úlistr   r   ÚcloseZremoveHandlerr
   ÚNOTSETr   r   ZNullHandler)Úlogr   r   r   r   r   Ú_resetLogger‰   s    

r@   c                   C   s   t t ¡ ƒ t tƒ ƒ d S r   )r@   r   r   r   r   r   r   ÚresetLoggingš   s    rA   )r   )N)r;   )Zcollections.abcr.   r6   r   Zlogging.configZlogging.handlersr3   r   ÚtimeZCRITICALZFATALZERRORZWARNINGZWARNÚINFOÚDEBUGr>   r   Úgmtimer   Z	converterr   r   r#   r:   r   r@   rA   r   r   r   r   Ú<module>   s2   



9
