
"·T`U  ã               @   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 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  j t ƒ } t  j ƒ  } xU | j D]J } t | d ƒ r+ t | j d ƒ r+ | j j d k r+ | j |  ƒ d  Sq+ Wt  j	 t
 j ƒ } | j | ƒ | j |  ƒ | j | ƒ | j |  ƒ d  S)NÚstreamÚnamez<stderr>)ÚloggingÚ	FormatterÚDEF_CON_FORMATÚ	getLoggerÚhandlersÚhasattrr   r   ÚsetLevelÚStreamHandlerÚsysÚstderrZsetFormatterÚ
addHandler)ÚlevelÚ	formatterÚrootÚhandlerZconsole© r   ú//usr/lib/python3/dist-packages/cloudinit/log.pyÚsetupBasicLogging%   s    !r   c             C   sd   |  s
 d  SxF |  j  D]; } t | t j ƒ r y | j ƒ  Wq t k
 rN Yq Xq Wt |  j ƒ d  S)N)r   Ú
isinstancer   r   ÚflushÚIOErrorÚflushLoggersÚparent)r   Úhr   r   r   r   6   s    	r   c             C   s¥  |  s i  }  g  } |  j  d ƒ } | rL t | t ƒ rL | j t | ƒ ƒ n‘ d |  k rÝ x‚ |  d D]v } t | t ƒ rˆ | j | ƒ qc t | t j ƒ rÆ d d „  | Dƒ } | j d j | ƒ ƒ qc | j t | ƒ ƒ qc Wd } xx | D]p } yU | d 7} | j d ƒ r!t j	 j
 | ƒ r!n t j | ƒ } t j j | ƒ d  SWqê t k
 rYYqê Xqê W|  j  d	 d
 ƒ } t j j d | ƒ | r¡t j j d ƒ t ƒ  d  S)NZlogcfgÚlog_cfgsc             S   s   g  |  ] } t  | ƒ ‘ q Sr   )Ú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ÚIterableÚjoinÚ
startswithÚosÚpathÚisfileÚioÚStringIOr   ÚconfigZ
fileConfigÚ	Exceptionr   r   Úwriter   )Úcfgr   Zlog_cfgZa_cfgZcfg_strZam_triedZbasic_enabledr   r   r   ÚsetupLoggingB   s>    
!	r3   Ú	cloudinitc             C   s   t  j |  ƒ S)N)r   r   )r   r   r   r   r   y   s    r   c             C   so   |  s
 d St  |  j ƒ } x/ | D]' } | j ƒ  | j ƒ  |  j | ƒ q  W|  j t ƒ |  j t j	 ƒ  ƒ 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    

r9   c               C   s!   t  t j ƒ  ƒ t  t ƒ  ƒ d  S)N)r9   r   r   r   r   r   r   ÚresetLoggingŽ   s    r:   )r&   r-   r   Zlogging.configZlogging.handlersr*   r   ÚtimeZCRITICALZFATALZERRORZWARNINGZWARNÚINFOÚDEBUGr7   r   Úgmtimer   Z	converterr   r   r3   r   r9   r:   r   r   r   r   Ú<module>   s0   								7