509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
À<×eû  ã            
   @   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jZd dlZd dl	Z	d dl
Z
yd dlmZ W n   d dlmZ Y nX dgZdai Ze
jƒ ZG dd„ deƒZdd„ Zdd	„ Zd
d„ Zdd„ ZG dd„ dejƒ ƒZejejejƒ ejeƒ e jejƒ dS )é    N)ÚStringIOÚgetc               @   s   e Zd Zdd„ ZdS )Ú
LogHandlerc             C   s   || _ || _d S )N)ÚhandlerÚstream)Úselfr   r   © r   ú/usr/lib/python3.6/logs.pyÚ__init__   s    zLogHandler.__init__N)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r      s   r   c             C   s<   t jƒ }tjtj }d}xt| ƒD ]}||j|ƒ7 }q"W |S )NÚ )ÚrandomZSystemRandomÚstringZascii_lettersZdigitsÚrangeZchoice)ZlengthÚrÚcharsÚresÚir   r   r	   Ú_random_string   s    r   c          
   C   s”   t �† x&tdƒD ]}tdƒ}|tkrP qW d S tƒ }tj|ƒ}|j| ƒ tjdƒ}|j	|ƒ t
j|ƒ t||ƒ}|t|< t
jd| ƒ |S Q R X d S )Né
   é   z%%(levelname)-8s %(name)s: %(message)szAdded log handler %s.)Úlog_handlers_lockr   r   Úlog_handlersr   ÚloggingÚStreamHandlerÚsetLevelÚ	FormatterÚsetFormatterÚroot_loggerÚ
addHandlerr   Údebug)Z	log_levelr   Útokenr   r   Z	formatterÚlog_handlerr   r   r	   Úlog_capture_start$   s"    




r%   c             C   sj   t �\ yt|  }W n tk
r&   d S X |jjƒ }|jjƒ  tj|jƒ t| = tj	d|  ƒ |S Q R X d S )NzRemoved log handler %s.)
r   r   ÚKeyErrorr   ÚgetvalueÚcloser    ÚremoveHandlerr   r"   )r#   r$   Zcontentr   r   r	   Úlog_capture_finish8   s    

r*   c              C   s|   t d krtjdƒa tjƒ j} | jd }|dkr6d}t S |jdƒrp|jddƒ\}}t j	|ƒ}|j
ƒ  |jdƒ |S dsxt‚d S )	NZtunedr   Ú__main__ztuned.Ú.é   ZNOTSETF)r    r   Z	getLoggerÚinspectZcurrentframeÚf_backÚf_localsÚ
startswithÚsplitZgetChildÚremove_all_handlersr   ÚAssertionError)Zcalling_moduleÚnameÚrootZchildZchild_loggerr   r   r	   r   E   s    





c                   sx   e Zd ZdZejdƒZdZdZ‡ fdd„Z	dd„ Z
dd	„ Zejejejfd
d„Zdd„ Zedd„ ƒZedd„ ƒZ‡  ZS )ÚTunedLoggerz!Custom TuneD daemon logger class.z1%(asctime)s %(levelname)-8s %(name)s: %(message)sNc                s*   t t| ƒj||Ž | jtjƒ | jƒ  d S )N)Úsuperr7   r
   r   r   ÚINFOÚswitch_to_console)r   ÚargsÚkwargs)Ú	__class__r   r	   r
   ^   s    zTunedLogger.__init__c             O   s   | j tj|f|ž|Ž d S )N)ÚlogÚconstsÚLOG_LEVEL_CONSOLE)r   Úmsgr;   r<   r   r   r	   Úconsolec   s    zTunedLogger.consolec             C   s    | j ƒ  | jƒ  | j| jƒ d S )N)Ú_setup_console_handlerr3   r!   Ú_console_handler)r   r   r   r	   r:   f   s    zTunedLogger.switch_to_consolec             C   s&   | j |||ƒ | jƒ  | j| jƒ d S )N)Ú_setup_file_handlerr3   r!   Ú_file_handler)r   ÚfilenameÚmaxBytesÚbackupCountr   r   r	   Úswitch_to_filek   s    zTunedLogger.switch_to_filec             C   s"   | j }x|D ]}| j|ƒ qW d S )N)Úhandlersr)   )r   Z	_handlersr   r   r   r	   r3   r   s    
zTunedLogger.remove_all_handlersc             C   s*   | j d k	rd S tjƒ | _ | j j| jƒ d S )N)rD   r   r   r   Ú
_formatter)Úclsr   r   r	   rC   w   s    

z"TunedLogger._setup_console_handlerc             C   sj   | j d k	rd S tjj|ƒ}|dkr&d}tjj|ƒs<tj|ƒ tjj|t	|ƒt	|ƒd�| _ | j j
| jƒ d S )Nr   r,   )rH   rI   )rF   ÚosÚpathÚdirnameÚexistsÚmakedirsr   rK   ZRotatingFileHandlerÚintr   rL   )rM   rG   rH   rI   Zlog_directoryr   r   r	   rE      s    

zTunedLogger._setup_file_handler)r   r   r   Ú__doc__r   r   rL   rD   rF   r
   rB   r:   r?   ZLOG_FILEZLOG_FILE_MAXBYTESZLOG_FILE_COUNTrJ   r3   ÚclassmethodrC   rE   Ú__classcell__r   r   )r=   r	   r7   X   s   
r7   ) Úatexitr   Zlogging.handlersrN   Zos.pathr.   Ztuned.constsr?   r   r   Z	threadingr   ÚioÚ__all__r    r   ZLockr   Úobjectr   r   r%   r*   r   ZgetLoggerClassr7   ZaddLevelNamer@   ZLOG_LEVEL_CONSOLE_NAMEZsetLoggerClassÚregisterZshutdownr   r   r   r	   Ú<module>   s4   
6
