+
     GiD  c                   st    ^ RI t ^ RIHt ^ RIt^ RIt^ RIt ! R R] P                  4      tR tR t	R t
R tR# )	i    N)RotatingFileHandlerc                   s.   a  ] tR t^
t o RtRtR tRtV tR# )stdout_loggerz5
Write to stdout and to the already opened log file.
Nc                s   V P                   P                  '       g<   VP                  \        P                  8  d   V P                   P
                  '       g   R #  V P                  V4      pV P                  pVP                  V4       VP                  V P                  4       V P                  4        R #   \        \        3 d    h \         d    T P                  T4        R # i ; iN)_argsZquietZlevelnologgingZINFOdetails_to_stdoutZformatstreamZwriteZ
terminatorZflushZKeyboardInterruptZ
SystemExitZBaseExceptionZhandleError)ZselfZrecordmsgr   s   &&  */usr/lib/waydroid/tools/helpers/logging.pyemitZstdout_logger.emit   s    ::-JJ000
	%++f%C[[FLLLL)JJL!:. 	 	%V$	%s   AB6 6C'C'&C' )	Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__r   r	   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r   r   
   s      E% %    r   c                 s    ^\         n        \         P                  ! \         P                  R4       R \         P                  n        R \         n        R# )aR  
Add a new log level "verbose", which is below "debug". Also monkeypatch
logging, so it can be used with logging.verbose().

This function is based on work by Voitek Zylinski and sleepycal:
https://stackoverflow.com/a/20602183
All stackoverflow user contributions are licensed as CC-BY-SA:
https://creativecommons.org/licenses/by-sa/3.0/
VERBOSEc                 sL    V P                   ! \        P                  V.VO5/ VB # r   )logr   r   )Zinstr   argskwargss   &&*,r   <lambda>'add_verbose_log_level.<locals>.<lambda>0   s    #GGGr   c                 sT    \         P                  ! \         P                  V .VO5/ VB # r   )r   r   r   )r   r   r   s   &*,r   r   r   2   s)    7;;w?B4IEI4IAG4Ir   N)r   r   ZaddLevelNameZLoggerverboser
   r   r   add_verbose_log_levelr   $   s8     GO)4HGNNIGOr   c                 s   \         P                  ! 4       p. Vn        \        4        VP	                  \         P
                  4       V P                  '       d    VP	                  \         P                  4       \        4       pWn	        VP                  \         P                  ! R RR7      4       VP                  V4       V P                  R8X  d   V P                  '       gu    \        P                   ! V P"                  R4       \%        T P"                  R	^R7      pTP                  \         P                  ! RRR7      4       TP                  T4       R# R# R#     LZ; i)
z[%(asctime)s] %(message)sz%H:%M:%S)ZdatefmtZ	containeri  )ZmaxBytesZbackupCountz'(%(process)d) [%(asctime)s] %(message)sz%a, %d %b %Y %H:%M:%SNi  P )r   	getLoggerZhandlersr   ZsetLevelZDEBUGr   r   r   r   ZsetFormatterZ	FormatterZ
addHandlerZactionr   osZchmodr   r    )r   Zroot_loggerZhandlers   &  r   initr   7   s   ##%KK '|||W__- oGM**+F*46 77# {{k!$*@*@*@	HHTXXu% &dhhRSTW../X.EG 	Hw' +A!	s   #!E Ec                  s>    \         P                  ! 4       p R V n        R# )TN)r   r   Zdisabled)Zloggers    r   disabler   S   s     FFOr   c                sF   a  \         P                  ! S 4      V 3R l4       pV# )za
A decorator that wraps a D-Bus method.
It logs any exceptions to stderr before re-raising them.
c                  sl   <  S! V / VB #   \          d   p\        P                  ! R 4       ThRp?ii ; i)Z N)Z	Exceptionr   Z	exception)r   r   Zefuncs   *, r   wrapperZlog_exceptions.<locals>.wrapper\   s;    	((( 	b!G	s    3.3)	functoolsZwraps)r   r   s   f r   log_exceptionsr   W   s'    
 __T  Nr   )r   Zlogging.handlersr    r   Zsysr   ZStreamHandlerr   r   r   r   r   r
   r   r   <module>r      s=     0 	 
 %G)) %4I&(8r   