
    vg3                        d 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dlm
Z
  G d d          Z G d	 d
          Zd Z e            Zd Z G d d          Z G d de          Z G d d          Z G d de          Z G d de          Z G d d          Z G d d          Z G d de          Zd$dZdZefdZd  Zd! Zd%d#ZdS )&z
Logger implementation loosely modeled on PEP 282.  We don't use the
PEP 282 logger implementation in the stdlib ('logging') because it's
idiosyncratic and a bit slow for our purposes (we don't use threads).
    Nsyslog)long)is_text_stream)	as_stringc                   *    e Zd ZdZdZdZdZdZdZdZ	dS )	LevelsByName2   (         
         N)
__name__
__module____qualname__CRITERROWARNINFODEBGTRACBLAT     O/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/supervisor/loggers.pyr	   r	      s1        DDDDDDDDDr   r	   c                   p    e Zd Zej        Zej        Zej        Z	ej
        Zej        Zej        Zej        ZdS )LevelsByDescriptionN)r   r   r   r	   r   criticalr   errorr   warnr   infor   debugr   tracer   blatherr   r   r   r   r      sF         HEDDEEGGGr   r   c                      i } t           j                                        D ]\  }}|                    d          s|| |<    | S )N_)r	   __dict__items
startswith)bynumbernamenumbers      r   _levelNumbersr/   '   sM    H$-3355 $ $fs## 	$#HVOr   c                 2    t          t          | d           }|S N)getattrr   )descriptionnums     r   getLevelNumByDescriptionr5   0   s    
%{D
9
9CJr   c                   L    e Zd ZdZej        Zd
dZd Zd Z	d Z
d Zd Zd	 ZdS )Handler%(message)sNc                 "    || _         d| _        d S NF)streamclosed)selfr;   s     r   __init__zHandler.__init__8   s    r   c                     || _         d S r1   )fmt)r=   r@   s     r   	setFormatzHandler.setFormat<       r   c                     || _         d S r1   level)r=   rE   s     r   setLevelzHandler.setLevel?   s    


r   c                     	 | j                                          d S # t          $ r'}|j        d         t          j        k    r Y d }~d S d }~ww xY wNr   )r;   flushIOErrorargserrnoEPIPEr=   whys     r   rI   zHandler.flushB   sj    	K 	 	 	x{ek)) *)))))	s    
AA		Ac                     | j         sjt          | j        d          r3	 | j                                        }|dk     rd S n# t          $ r Y nw xY w| j                                         d| _         d S d S )Nfilenor   T)r<   hasattrr;   rQ   rJ   close)r=   fds     r   rS   zHandler.closeJ   s    { 	t{H-- 	++--B Avv      D KDKKK	 	s   A   
AAc                    	 | j         dk    o.t          |j        t                    o|j         p|j        dd ik    }t          | j                   }|r|j        }n3| j         |                                z  }|r|                    d          }	 | j        	                    |           n*# t          $ r | j        	                    |           Y nw xY w|                                  d S #  |                                  Y d S xY w)Nr8   exc_infozutf-8)r@   
isinstancemsgbyteskwr   r;   asdictencodewriteUnicodeErrorrI   handleError)r=   recordbinarybinary_streamrX   s        r   emitzHandler.emitY   s)   	h-/ I U33I!9}G	j$5G(G  !/t{ ; ;;M .jh0  .**W--C'!!#&&&& ' ' '
 !!#&&&&&' JJLLLLL	s0   BC* B* )C* *$CC* CC* *Dc                     t          j                    }t          j        |d         |d         |d         d t           j                   ~d S )Nr         )sysrV   	tracebackprint_exceptionstderr)r=   eis     r   r_   zHandler.handleErrorq   s;    \^^!"Q%A1tSZHHHBBr   r1   )r   r   r   r@   r	   r   rE   r>   rA   rF   rI   rS   rc   r_   r   r   r   r7   r7   4   s        
CE             0    r   r7   c                   "    e Zd ZddZd Zd ZdS )StreamHandlerNc                 <    t                               | |           d S r1   )r7   r>   )r=   strms     r   r>   zStreamHandler.__init__w   s    t$$$$$r   c                 f    t          | j        d          r| j                                         d S d S )Nclear)rR   r;   rq   r=   s    r   removezStreamHandler.removez   s:    4;(( 	 K	  	 r   c                     d S r1   r   rr   s    r   reopenzStreamHandler.reopen~       r   r1   )r   r   r   r>   rs   ru   r   r   r   rm   rm   v   sF        % % % %         r   rm   c                   4    e Zd Zd	dZd Zd Zd Zd Zd ZdS )
BoundIOr   c                 "    || _         || _        d S r1   )maxbytesbuf)r=   rz   r{   s      r   r>   zBoundIO.__init__   s     r   c                     d S r1   r   rr   s    r   rI   zBoundIO.flush   rv   r   c                 .    |                                   d S r1   )rq   rr   s    r   rS   zBoundIO.close   s    

r   c                     t          |          }t          | j                  |z   | j        k    r| j        |d          | _        | xj        |z  c_        d S r1   )lenr{   rz   )r=   bblens      r   r]   zBoundIO.write   sK    1vvtx==4$-//xDHAr   c                     | j         S r1   r{   rr   s    r   getvaluezBoundIO.getvalue   s	    xr   c                     d| _         d S )Nr   r   rr   s    r   rq   zBoundIO.clear   rB   r   N)r   )	r   r   r   r>   rI   rS   r]   r   rq   r   r   r   rx   rx      ss                       r   rx   c                   &    e Zd ZdZddZd Zd ZdS )FileHandlerz3File handler which supports reopening of logs.
    abc                    t                               |            	 t          ||          | _        nK# t          $ r>}|dk    r-|j        t
          j        k    rd}t          ||          | _        n Y d }~nd }~ww xY w|| _        || _        d S )Nr   wb)	r7   r>   openr;   OSErrorrL   ESPIPEbaseFilenamemode)r=   filenamer   es       r   r>   zFileHandler.__init__   s    	x..DKK 		 		 		t||5< 7 7
 "8T22 		 %			s   2 
A:4A55A:c                 z    |                                   t          | j        | j                  | _        d| _        d S r:   )rS   r   r   r   r;   r<   rr   s    r   ru   zFileHandler.reopen   s0    

4,di88r   c                     |                                   	 t          j        | j                   d S # t          $ r'}|j        d         t          j        k    r Y d }~d S d }~ww xY wrH   )rS   osrs   r   r   rK   rL   ENOENTrN   s     r   rs   zFileHandler.remove   sv    

	Id'((((( 	 	 	x{el** +*****	s   1 
A"AA"N)r   )r   r   r   __doc__r>   ru   rs   r   r   r   r   r      sP            &  
    r   r   c                   >    e Zd Z	 	 ddZd Zd Zd Zd Zd	 Zd
 Z	dS )RotatingFileHandlerr       r   c                     |dk    rd}t                               | ||           || _        || _        d| _        d| _        dS )a  
        Open the specified file and use it as the stream for logging.

        By default, the file grows indefinitely. You can specify particular
        values of maxBytes and backupCount to allow the file to rollover at
        a predetermined size.

        Rollover occurs whenever the current log file is nearly maxBytes in
        length. If backupCount is >= 1, the system will successively create
        new files with the same pathname as the base file, but with extensions
        ".1", ".2" etc. appended to it. For example, with a backupCount of 5
        and a base file name of "app.log", you would get "app.log",
        "app.log.1", "app.log.2", ... through to "app.log.5". The file being
        written to is always "app.log" - when it gets filled up, it is closed
        and renamed to "app.log.1", and if files "app.log.1", "app.log.2" etc.
        exist, then they are renamed to "app.log.2", "app.log.3" etc.
        respectively.

        If maxBytes is zero, rollover never occurs.
        r   r   r   N)r   r>   maxBytesbackupCountcounterevery)r=   r   r   r   r   s        r   r>   zRotatingFileHandler.__init__   sK    , a<<DT8T222 &


r   c                 d    t                               | |           |                                  dS )z
        Emit a record.

        Output the record to the file, catering for rollover as described
        in doRollover().
        N)r   rc   
doRollover)r=   r`   s     r   rc   zRotatingFileHandler.emit   s0     	v&&&r   c                 *    t          j        |          S r1   )r   rs   r=   fns     r   _removezRotatingFileHandler._remove   s    y}}r   c                 ,    t          j        ||          S r1   )r   rename)r=   srctgts      r   _renamezRotatingFileHandler._rename   s    yc"""r   c                 @    t           j                            |          S r1   )r   pathexistsr   s     r   _existszRotatingFileHandler._exists   s    w~~b!!!r   c                 Z   |                      |          rJ	 |                     |           n3# t          $ r&}|j        d         t          j        k    r Y d }~nd }~ww xY w	 |                     ||           d S # t          $ r'}|j        d         t          j        k    r Y d }~d S d }~ww xY wrH   )r   r   r   rK   rL   r   r   )r=   sfndfnrO   s       r   removeAndRenamez#RotatingFileHandler.removeAndRename   s    << 	S!!!!   8A;%,.. /....	LLc""""" 	 	 	 x{el** +*****	s,   - 
AAA!A9 9
B*B%%B*c                    | j         dk    rdS | j                                        | j         k    sdS | j                                         | j        dk    rt          | j        dz
  dd          D ]R}d| j        |fz  }d| j        |dz   fz  }t          j        	                    |          r| 
                    ||           S| j        dz   }| 
                    | j        |           t          | j        d          | _        dS )z<
        Do a rollover, as described in __init__().
        r   Nre   z%s.%dz.1r   )r   r;   tellrS   r   ranger   r   r   r   r   r   )r=   ir   r   s       r   r   zRotatingFileHandler.doRollover  s    =AF  ""dm33Fa4+a/B77 3 3!2A 66!2AE ::7>>#&& 3((c222#d*C  !2C8884,d33r   N)r   r   r   )
r   r   r   r>   rc   r   r   r   r   r   r   r   r   r   r      s        5B   <    # # #" " "   4 4 4 4 4r   r   c                       e Zd Zd Zd ZdS )	LogRecordc                 >    || _         || _        || _        d | _        d S r1   )rE   rX   rZ   dictrepr)r=   rE   rX   rZ   s       r   r>   zLogRecord.__init__  s"    
r   c                 N   | j         t          j                    }|t          |          z
  dz  }t          j        dt          j        |                    }d||fz  }t
          | j                 }t          | j                  }| j	        r
|| j	        z  }|||d| _         | j         S )Ni  z%Y-%m-%d %H:%M:%Sz%s,%03d)message	levelnameasctime)
r   timer   strftime	localtimeLOG_LEVELS_BY_NUMrE   r   rX   rZ   )r=   nowmsecspart1r   r   rX   s          r   r[   zLogRecord.asdict  s    = )++C499_,EM"5t~c7J7JKKE5%.0G)$*5IDH%%Cw $DGm'*	'.0 0DM}r   N)r   r   r   r>   r[   r   r   r   r   r     s2              r   r   c                   X    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd ZdS )LoggerNc                 F    |t           j        }|| _        |g }|| _        d S r1   )r	   r   rE   handlers)r=   rE   r   s      r   r>   zLogger.__init__,  s,    = %E
H r   c                 B    | j         D ]}|                                 d S r1   )r   rS   )r=   handlers     r   rS   zLogger.close5  s,    } 	 	GMMOOOO	 	r   c                 f    t           j        | j        k    r | j        t           j        |fi | d S d S r1   )r	   r   rE   logr=   rX   rZ   s      r   r&   zLogger.blather9  ?    
**DH\&22r22222 +*r   c                 f    t           j        | j        k    r | j        t           j        |fi | d S d S r1   )r	   r   rE   r   r   s      r   r%   zLogger.trace=  r   r   c                 f    t           j        | j        k    r | j        t           j        |fi | d S d S r1   )r	   r   rE   r   r   s      r   r$   zLogger.debugA  r   r   c                 f    t           j        | j        k    r | j        t           j        |fi | d S d S r1   )r	   r   rE   r   r   s      r   r#   zLogger.infoE  r   r   c                 f    t           j        | j        k    r | j        t           j        |fi | d S d S r1   )r	   r   rE   r   r   s      r   r"   zLogger.warnI  r   r   c                 f    t           j        | j        k    r | j        t           j        |fi | d S d S r1   )r	   r   rE   r   r   s      r   r!   zLogger.errorM  r   r   c                 f    t           j        | j        k    r | j        t           j        |fi | d S d S r1   )r	   r   rE   r   r   s      r   r    zLogger.criticalQ  r   r   c                 v    t          ||fi |}| j        D ]"}||j        k    r|                    |           #d S r1   )r   r   rE   rc   )r=   rE   rX   rZ   r`   r   s         r   r   z
Logger.logU  sT    5#,,,,} 	% 	%G%%V$$$	% 	%r   c                 :    | j                             |           d S r1   )r   append)r=   hdlrs     r   
addHandlerzLogger.addHandler[  s    T"""""r   c                     t           r1   )NotImplementedErrorrr   s    r   r   zLogger.getvalue^  s    !!r   )NN)r   r   r   r>   rS   r&   r%   r$   r#   r"   r!   r    r   r   r   r   r   r   r   r   +  s        ! ! ! !  3 3 33 3 33 3 33 3 33 3 33 3 33 3 3% % %# # #" " " " "r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )SyslogHandlerc                 \    t                               |            t          
J d            d S )NzSyslog module not present)r7   r>   r   rr   s    r   r>   zSyslogHandler.__init__b  s1    !!#>!!!!!r   c                     d S r1   r   rr   s    r   rS   zSyslogHandler.closef  rv   r   c                     d S r1   r   rr   s    r   ru   zSyslogHandler.reopeni  rv   r   c                 .    t          j         |           d S r1   r   )r=   rX   s     r   _syslogzSyslogHandler._syslogl  s    cr   c                    	 |                                 }|d         }|                    d                              d          D ]_}||d<   | j        |z  }	 |                     |           (# t
          $ r+ |                     |                    d                     Y \w xY wd S #  |                                  Y d S xY w)Nr   
zUTF-8)r[   rstripsplitr@   r   r^   r\   r_   )r=   r`   paramsr   linerX   s         r   rc   zSyslogHandler.emitp  s    	]]__FY'Gt,,22488 6 6$(y!h'6LL%%%%# 6 6 6LLG!4!45555566 6	s0   AB( A.-B( .2B# B( "B##B( (CN)r   r   r   r>   rS   ru   r   rc   r   r   r   r   r   a  s_        ? ? ?          r   r   c                      t          |           S r1   )r   rD   s    r   	getLoggerr   ~  s    %==r   i    c                     t          |          }t          |          }|                    | j                   |                    |           |                     |           |j        | _        dS )z2Attach a new BoundIO handler to an existing LoggerN)rx   rm   rF   rE   rA   r   r   )loggerr@   rz   ior   s        r   handle_boundIOr     sg    			BBGV\"""c
gkFOOOr   c                     t          t          j                  }|                    |           |                    | j                   |                     |           dS )zDAttach a new StreamHandler with stdout handler to an existing LoggerN)rm   rg   stdoutrA   rF   rE   r   r   r@   r   s      r   handle_stdoutr     sU    CJ''GcV\"""
gr   c                     t                      }|                    |           |                    | j                   |                     |           dS )z1Attach a new Syslog handler to an existing LoggerN)r   rA   rF   rE   r   r   s      r   handle_syslogr     sO    ooGcV\"""
gr   Fc                    |dk    rt                      }n&|du rt          |          }nt          |d||          }|                    |           |                    | j                   |                     |           dS )zAttach a new file handler to an existing Logger. If the filename
    is the magic name of 'syslog' then make it a syslog handler instead.r   FaN)r   r   r   rA   rF   rE   r   )r   r   r@   rotatingrz   backupsr   s          r   handle_filer     s     8//u!(++GG)(C7KKGcV\"""
gr   r1   )Fr   r   )r   r   rL   rg   r   rh   supervisor.compatr   r   r   r   r	   r   r/   r   r5   r7   rm   rx   r   r   r   r   r   r   _2MBr   r   r   r   r   r   r   <module>r      s    
			  



      $ $ $ $ $ $ " " " " " " , , , , , , ' ' ' ' ' '                         "MOO   @ @ @ @ @ @ @ @D	 	 	 	 	G 	 	 	       ." " " " "' " " "HX4 X4 X4 X4 X4+ X4 X4 X4t       *4" 4" 4" 4" 4" 4" 4" 4"l    G   :    )- " " " "         r   