o
    x[hi	  ã                   @   s~   d dl Z d dlZd dlZd dlmZ e  e¡Ze jddœde	ddfdd„Z
ed	ƒd
d„ ƒZddde jdfdd„Zddd„ZdS )é    N)ÚtimedT)Ú	log_levelÚexc_infor   Úreturnc                G   s0   | j ||g|¢R Ž  | j|g|¢R d|iŽ d S )Nr   )ÚlogÚdebug)r   Úmsgr   r   Úargs© r
   ú8/usr/lib/python3/dist-packages/cloudinit/log/log_util.pyÚlogexc
   s   r   zWriting to consolec                 C   sB   t | dƒ�}| |¡ | ¡  W d   ƒ d S 1 sw   Y  d S )NÚw)ÚopenÚwriteÚflush)ÚconpathÚtextÚwfhr
   r
   r   Úwrite_to_console   s   

"þr   c           	      C   sÆ   |rt j | ¡ |rEd}d}tj |¡r;z	t|| ƒ d}W n ty:   d}t j |› d�¡ |r8| 	t
j|¡ Y nw |rE|sEt j | ¡ |ra| d dkrY| 	|| d d… ¡ d S | 	|| ¡ d S d S )Nz/dev/consoleFTzFailed to write to /dev/consoleÚ
éÿÿÿÿ)ÚsysÚstderrr   ÚosÚpathÚexistsr   ÚOSErrorÚstdoutr   ÚloggingÚWARNING)	r   Úconsoler   r   r   Úfallback_to_stdoutr   Úwriting_to_console_workedÚconsole_errorr
   r
   r   Ú	multi_log   s.   
€üür$   é   ú	Error:
{}Fc                 C   s&   t | | ¡tjd� |rt |¡ |S )züPrint error to stderr and return or exit

    @param msg: message to print
    @param rc: return code (default: 1)
    @param fmt: format string for putting message in (default: 'Error:\n {}')
    @param sys_exit: exit when called (default: false)
    )Úfile)ÚprintÚformatr   r   Úexit)r   ÚrcÚfmtÚsys_exitr
   r
   r   ÚerrorD   s   
r.   )r%   r&   F)r   r   r   Úcloudinit.performancer   Ú	getLoggerÚ__name__ÚLOGr   Úintr   r   ÚDEBUGr$   r.   r
   r
   r
   r   Ú<module>   s(    
ÿÿ
þ

ú,