
    TfR                     f    d Z ddlZddlZddlmZ ddlmZ dZdZdZ	dZ
d	Zd
Z G d de          ZdS )z;Bare-bones implementation of statsD's protocol, client-side    N)sub)Loggermetricvaluemtypegaugecounter	histogramc                   j    e Z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dZddZd Zd ZdS )Statsdz:statsD-based instrumentation, that passes as a logger
    c                    t          j        | |           t          dd|j                  | _        t          |j        t                    rt          j	        }nt          j
        }	 t          j        |t          j                  | _        | j                            |j                   n# t          $ r
 d | _        Y nw xY w|j        | _        d S )Nz^(.+[^.]+)\.*$z\g<1>.)r   __init__r   statsd_prefixprefix
isinstancestatsd_hoststrsocketAF_UNIXAF_INET
SOCK_DGRAMsockconnect	Exceptiondogstatsd_tags)selfcfgaddress_familys      L/var/www/html/env/lib/python3.11/site-packages/gunicorn/instrument/statsd.pyr   zStatsd.__init__   s    c"""+Y8IJJcos++ 	,#^NN#^N	nf6GHHDIIco.... 	 	 	DIII	 "0s   %AB) )B=<B=c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.critical   )r   critical	incrementr   msgargskwargss       r   r"   zStatsd.critical,   s?    c3D333F333.22222    c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.errorr!   )r   errorr#   r$   s       r   r*   zStatsd.error0   s?    T30000000+Q/////r(   c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.warningr!   )r   warningr#   r$   s       r   r,   zStatsd.warning4   s?    tS242226222-q11111r(   c                 ^    t          j        | |g|R i | |                     dd           d S )Nzgunicorn.log.exceptionr!   )r   	exceptionr#   r$   s       r   r.   zStatsd.exception8   s@    s4T444V444/33333r(   c                 >     | j         t          j        |g|R i | d S N)logloggingINFOr$   s       r   infozStatsd.info=   s.    s4T444V44444r(   c                 >     | j         t          j        |g|R i | d S r0   )r1   r2   DEBUGr$   s       r   debugzStatsd.debugA   s.    5d555f55555r(   c                 :   	 |                     dd          }||                     t          d          }|                     t          d          }|                     t          d          }|rk|ri|rg|t          k    r|                     ||           nE|t          k    r|                     ||           n#|t          k    r| 	                    ||           n	 |rt          j        | ||g|R i | dS dS # t          $ r t          j        | dd           Y dS w xY w)zDLog a given statistic if metric, value and type are present
        extraNzFailed to log to statsdTexc_info)get
METRIC_VAR	VALUE_VAR	MTYPE_VAR
GAUGE_TYPEr   COUNTER_TYPEr#   HISTOGRAM_TYPEr
   r   r1   r   r,   )	r   lvlr%   r&   r'   r9   r   r   typs	            r   r1   z
Statsd.logD   sW   	KJJw--E :t44		)T22ii	400 e  j((

651111,,vu5555..vu5555  <
4c;D;;;F;;;;;< < 	K 	K 	KN4!:TJJJJJJJ	Ks   C/C5 5!DDc                    t          j        | ||||           |j        dz  t          |j                  dz  z   }|j        }t          |t                    r)t          |	                    dd          d                   }| 
                    d|           |                     dd           |                     d|z  d           dS )zNMeasure request duration
        request_time is a datetime.timedelta
        i  Nr!   r   zgunicorn.request.durationzgunicorn.requestszgunicorn.request.status.%d)r   accesssecondsfloatmicrosecondsstatusr   r   intsplitr
   r#   )r   respreqenvironrequest_timeduration_in_msrJ   s          r   rF   zStatsd.access^   s     	dD#w===%-4u\=V7W7WZa7aafc"" 	3dA..q122F2NCCC*A...3f<a@@@@@r(   c                 d    |                      d                    | j        ||                     d S )Nz{0}{1}:{2}|g
_sock_sendformatr   r   namer   s      r   r   zStatsd.gaugem   s.    --dk4GGHHHHHr(         ?c                 f    |                      d                    | j        |||                     d S )Nz{0}{1}:{2}|c|@{3}rS   r   rW   r   sampling_rates       r   r#   zStatsd.incrementp   s1    +224;e][[\\\\\r(   c                 f    |                      d                    | j        |||                     d S )Nz{0}{1}:-{2}|c|@{3}rS   rZ   s       r   	decrementzStatsd.decrements   s1    ,33DKum\\]]]]]r(   c                 d    |                      d                    | j        ||                     d S )Nz{0}{1}:{2}|msrS   rV   s      r   r
   zStatsd.histogramv   s.    ..t{D%HHIIIIIr(   c                 @   	 t          |t                    r|                    d          }| j        r |dz   | j                            d          z   }| j        r| j                            |           d S d S # t          $ r t          j        | dd           Y d S w xY w)Nasciis   |#zError sending message to statsdTr:   )	r   r   encoder   r   sendr   r   r,   )r   r%   s     r   rT   zStatsd._sock_sendy   s    	S#s## *jj)) " HEkD$7$>$>w$G$GGy $	s#####$ $ 	S 	S 	SN4!BTRRRRRRR	Ss   A2A8 8!BBN)rX   )__name__
__module____qualname____doc__r   r"   r*   r,   r.   r4   r7   r1   rF   r   r#   r]   r
   rT    r(   r   r   r      s        1 1 1$3 3 30 0 02 2 24 4 4
5 5 56 6 6K K K4A A AI I I] ] ] ]^ ^ ^ ^J J JS S S S Sr(   r   )rf   r2   r   rer   gunicorn.gloggingr   r=   r>   r?   r@   rA   rB   r   rg   r(   r   <module>rj      s    > =         $ $ $ $ $ $ 
		
nS nS nS nS nSV nS nS nS nS nSr(   