U
    ¯AdP  ã                   @   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„ 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              	   C   s6  | 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|ƒ¡ qDd}|D ]X}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| ¡ |r2tj d¡ tƒ  d S )NZlogcfgÚlog_cfgsc                 S   s   g | ]}t |ƒ‘qS r   )Ústr)Ú.0Úcr   r   r   Ú
<listcomp>R   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ÚjoinÚ
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   ÚsetupLoggingB   s@    


ÿr1   Ú	cloudinitc                 C   s
   t  | ¡S r   )r   r   )r   r   r   r   r   z   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    

r7   c                   C   s   t t ¡ ƒ t tƒ ƒ d S r   )r7   r   r   r   r   r   r   ÚresetLogging   s    r8   )N)r2   )Zcollections.abcr%   r-   r   Zlogging.configZlogging.handlersr*   r   ÚtimeZCRITICALZFATALZERRORZWARNINGZWARNÚINFOÚDEBUGr5   r   Úgmtimer   Z	converterr   r   r1   r   r7   r8   r   r   r   r   Ú<module>   s0   

8
