o
    thi	                     @   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 )zPrint 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(    



,