
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!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rºxb| d D ]V}t|tƒrz|j|ƒ q`t|t	j
jƒr¨dd„ |D ƒ}|jdj|ƒƒ q`|jt|ƒƒ q`W d}x^|D ]V}ttƒ�D |d7 }|jdƒoîtjj|ƒsútj|ƒ}t jj|ƒ |j|ƒ d S Q R X qÄW |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 )z·In 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