
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me                 @   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d dl	Z	d dlm
Z
 d dlmZ d dlmZ dZdZejdfddZd	d
 ZefddZdddZG dd dejZdd Zdd Zdd ZdS )    N)defaultdict)suppress)DefaultDictz6%(asctime)s - %(filename)s[%(levelname)s]: %(message)s#   c             C   sN   |pt jt}t j }t jtj}|j| |j|  |j	| |j|  d S )N)
logging	FormatterDEFAULT_LOG_FORMAT	getLoggerStreamHandlersysstderrsetFormattersetLevel
addHandler)levelZ	formatterrootZconsole r   /usr/lib/python3.6/log.pysetup_basic_logging   s    


r   c          
   C   sN   | sd S x6| j D ],}t|tjrtt |j  W d Q R X qW t| j d S )N)	handlers
isinstancer   r
   r   IOErrorflushflush_loggersparent)r   hr   r   r   r   &   s    
r   c                s$   t j d  fdd}|t j_d S )N
DEPRECATEDc                s    | j  r| j ||f| d S )N)ZisEnabledForZ_log)selfmessageargskwargs)lvlr   r   
deprecated3   s    
z-define_deprecation_logger.<locals>.deprecated)r   ZaddLevelNameZLoggerr"   )r!   r"   r   )r!   r   define_deprecation_logger0   s    r#   c       	   
   C   s`  | si } t j }t }|jt j g }| jd}|rNt|trN|jt| nld| krxb| d D ]V}t|trz|j| q`t|t	j
jrdd |D }|jdj| q`|jt| q`W d}x^|D ]V}ttD |d7 }|jdotjj|stj|}t jj| |j| d S Q R X qW |j| | jd	d
}tjjd|  |r\tjjd t  d S )NZlogcfglog_cfgsc             S   s   g | ]}t |qS r   )str).0cr   r   r   
<listcomp>N   s    z!setup_logging.<locals>.<listcomp>
r      /Z	log_basicTz0WARN: no logging configured! (tried %s configs)
zSetting up basic logging...
)r   r	   LogExporterr   WARNgetr   r%   appendcollectionsabcIterablejoinr   FileNotFoundError
startswithospathisfileioStringIOconfigZ
fileConfigr   r   r   writer   )	ZcfgZroot_loggerZexporterr$   Zlog_cfgZa_cfgZcfg_strZam_triedZbasic_enabledr   r   r   setup_logging:   sB    







r=   c               @   sB   e Zd ZU eeZeeef ej	dddZ
dd Zdd ZdS )	r,   )recordc             C   s   | j |j j|j  d S )N)holderZ	levelnamer/   Z
getMessage)r   r>   r   r   r   emit~   s    zLogExporter.emitc             C   s   t j| jS )N)copydeepcopyr?   )r   r   r   r   export_logs   s    zLogExporter.export_logsc             C   s   d S )Nr   )r   r   r   r   r      s    zLogExporter.flushN)__name__
__module____qualname__r   listr?   r   r%   r   Z	LogRecordr@   rC   r   r   r   r   r   r,   {   s   
r,   c              C   sJ   t j } t| j}x&|D ]}|j  |j  | j| qW | jt j dS )z0Remove all current handlers and unset log level.N)	r   r	   rG   r   r   closeZremoveHandlerr   ZNOTSET)logr   r   r   r   r   reset_logging   s    

rJ   c                 s>   t jtj dd  _ jt jd  fdd} | t j_dS )zIn the event that internal logging exception occurs and logging is not
    possible for some reason, make a desparate final attempt to log to stderr
    which may ease debugging.
    c             S   s   d S )Nr   )r>   r   r   r   <lambda>   s    z&setup_backup_logging.<locals>.<lambda>z@FALLBACK: %(asctime)s - %(filename)s[%(levelname)s]: %(message)sc          	      s*   t t  j|  j  W dQ R X dS )z;A closure that emits logs on stderr when other methods failN)r   r   Zhandler   )r   r>   )fallback_handlerr   r   handleError   s    

z)setup_backup_logging.<locals>.handleErrorN)r   r
   r   r   rM   r   r   ZHandler)rM   r   )rL   r   setup_backup_logging   s    
rN   c              C   s@   t jtj_t  t  t  t } | j	tj
 tj j|  dS )z(Customize the root logger for cloud-initN)timeZgmtimer   r   Z	converterr#   rN   rJ   r,   r   r-   r	   r   )Zhandlerr   r   r   configure_root_logger   s    
rP   )N)collections.abcr0   rA   r9   r   Zlogging.configZlogging.handlersr6   r   rO   r   
contextlibr   Ztypingr   r   r   DEBUGr   r   r#   r=   r
   r,   rJ   rN   rP   r   r   r   r   <module>   s*   



A