
    +hR                     ^    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y)z;Bare-bones implementation of statsD's protocol, client-side    N)sub)Loggermetricvaluemtypegaugecounter	histogramc                   h    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y)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                  |j                         |j                  | _        y # t        $ r
 d | _        Y $w xY w)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      M/var/www/html/venv/lib/python3.12/site-packages/gunicorn/instrument/statsd.pyr   zStatsd.__init__   s    c"+Y8I8IJcoos+#^^N#^^N	nf6G6GHDIIIcoo. "00  	DI	s   /AC C"!C"c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.critical   )r   critical	incrementr   msgargskwargss       r   r"   zStatsd.critical,   s)    c3D3F3.2    c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.errorr!   )r   errorr#   r$   s       r   r*   zStatsd.error0   s)    T3000+Q/r(   c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.warningr!   )r   warningr#   r$   s       r   r,   zStatsd.warning4   s)    tS24262-q1r(   c                 \    t        j                  | |g|i | | j                  dd       y )Nzgunicorn.log.exceptionr!   )r   	exceptionr#   r$   s       r   r.   zStatsd.exception8   s+    s4T4V4/3r(   c                 N     | j                   t        j                  |g|i | y N)logloggingINFOr$   s       r   infozStatsd.info=   s     s4T4V4r(   c                 N     | j                   t        j                  |g|i | y r0   )r1   r2   DEBUGr$   s       r   debugzStatsd.debugA   s     5d5f5r(   c                    	 |j                  dd      }||j                  t        d      }|j                  t        d      }|j                  t        d      }|rY|rW|rU|t        k(  r| j                  ||       n9|t        k(  r| j                  ||       n|t        k(  r| j                  ||       n	 |rt        j                  | ||g|i | yy# t        $ r t        j                  | dd       Y y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   s    	KJJw-E :t4		)T2ii	40ej(

651,vu5.vu5 

4c;D;F;  	KNN4!:TJ	Ks   CC !C65C6c                 l   t        j                  | ||||       |j                  dz  t        |j                        dz  z   }|j
                  }t        |t              rt        |j                  dd      d         }| j                  d|       | j                  dd       | j                  d|z  d       y)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\=V=V7WZa7aafc"dA.q12F2NC*A.3f<a@r(   c                 \    | j                  dj                  | j                  ||             y )Nz{0}{1}:{2}|g
_sock_sendformatr   r   namer   s      r   r   zStatsd.gaugem   s!    --dkk4GHr(   c                 ^    | j                  dj                  | j                  |||             y )Nz{0}{1}:{2}|c|@{3}rS   r   rW   r   sampling_rates       r   r#   zStatsd.incrementp   s$    +224;;e][\r(   c                 ^    | j                  dj                  | j                  |||             y )Nz{0}{1}:-{2}|c|@{3}rS   rY   s       r   	decrementzStatsd.decrements   s$    ,33DKKum\]r(   c                 \    | j                  dj                  | j                  ||             y )Nz{0}{1}:{2}|msrS   rV   s      r   r
   zStatsd.histogramv   s!    ..t{{D%HIr(   c                 @   	 t        |t              r|j                  d      }| j                  r!|dz   | j                  j                  d      z   }| j                  r| j                  j                  |       y y # t        $ r t        j                  | dd       Y y 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) ""EkD$7$7$>$>w$GGyy		s#  	SNN4!BTR	Ss   A5A9 9!BBN)g      ?)__name__
__module____qualname____doc__r   r"   r*   r,   r.   r4   r7   r1   rF   r   r#   r\   r
   rT    r(   r   r   r      sT    1$3024
56K4AI]^JSr(   r   )re   r2   r   rer   gunicorn.gloggingr   r=   r>   r?   r@   rA   rB   r   rf   r(   r   <module>ri      sF    >    $ 
		
nSV nSr(   