
    2Bh;              
          S SK r S SKrS SKrS SKrS SKrS\R
                  R                  l        S SKJ	r	  S SKJ
r
  S SKrS SKrS SKrS SKrS SKrS SKJr  0 SS_SS	_S
S_SS_SS_SS _SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&S'S(S).ErSS*S+S,/S-.S+S./S/S0S1.S+S,/S/S2S1.S3.S4S5S6S7.S4S5S8S7.S9.S5S:S;S<S=.0S>.rS? r " S@ SA\5      rSB r " SC SD5      rg)E    N   )
dictConfig)
fileConfig)utilauth   authpriv
   cron	   daemon   ftp   kernlpr   mail   news   securitysyslog   useruucp   local0   local1   local2   local3               )local4local5local6local7FINFOconsole)levelhandlerserror_consoleTgunicorn.error)r0   r1   	propagatequalnamegunicorn.access)r3   r6   zlogging.StreamHandlergenericzext://sys.stdout)class	formatterstreamzext://sys.stderr)r/   r2   5%(asctime)s [%(process)d] [%(levelname)s] %(message)s[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)formatdatefmtr8   )versiondisable_existing_loggersrootloggersr1   
formattersc                      [         R                  n [        U R                  R                  R                  5       5      nU Vs/ s H  n[         R                  " U5      PM     sn$ s  snf )zget list of all loggers )loggingrA   listmanager
loggerDictkeys	getLogger)rA   existingnames      C/var/www/html/env/lib/python3.13/site-packages/gunicorn/glogging.pyrB   rB   X   sK    <<DDLL++0023H089Gd#999s    A%c                   .   ^  \ rS rSrS rU 4S jrSrU =r$ )	SafeAtoms_   c                     [         R                  U 5        UR                  5        H4  u  p#[        U[        5      (       a  UR                  SS5      X'   M0  X0U'   M6     g )N"z\")dict__init__items
isinstancestrreplace)selfatomskeyvalues       rM   rT   SafeAtoms.__init__a   sF    d++-JC%%%!MM#u5	!S		 (    c                    > UR                  S5      (       a%  UR                  5       nX ;   a  [        TU ]  U5      $ gX;   a  [        TU ]  U5      $ g)N{-)
startswithlowersuper__getitem__)rY   kkl	__class__s      rM   re   SafeAtoms.__getitem__i   sM    <<Bzw*2..97&q))r^    )__name__
__module____qualname____firstlineno__rT   re   __static_attributes____classcell__)rh   s   @rM   rO   rO   _   s    "
 
r^   rO   c                    U R                  S5      (       aV  S nU R                  SS5      n[        U5      S:X  a  US   n US   S:X  a  [        R                  nXR                  S5      S   4$ U R                  S5      (       a%  U R                  S5      S   n [        R                  nOFU R                  S5      (       a%  U R                  S5      S   n [        R
                  nO[        S	5      eS
U ;   a,  SU ;   a&  U R                  S5      S   SS  R                  5       nOBSU ;   a#  U R                  S5      S   R                  5       nOU S:X  a  SnOU R                  5       nU R                  S5      S   n SU ;   aD  U R                  SS5      S   nUR                  5       (       d  [        SU-  5      e[        U5      nOSnX4U44$ )Nzunix://#r   r   r   dgramzudp://ztcp://zinvalid syslog address[]: 	localhostz%r is not a valid port number.i  )
rb   splitlensocket
SOCK_DGRAMSOCK_STREAMRuntimeErrorrc   isdigitint)addr	sock_typepartssocktypehostports         rM   parse_syslog_addressr   v   s    y!!	 

3"u:?8DQx7""--	::i0344x  zz(#A&$$		"	"zz(#A&%%344
d{sd{zz#q!!"%++-	zz#q!'')	zz|::c?2D
d{zz#q!!$||~~?$FGG4yTl##r^   c                   $   \ rS rSr\R
                  \R                  \R                  \R                  \R                  S.r
\R                  rSrSrSrSr\rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS r SS jr!S r"S r#Sr$g)Logger   )criticalerrorwarninginfodebugr;   r<   z%(message)sz[%(process)d] %(message)sc                 @   [         R                  " S5      U l        SU R                  l        [         R                  " S5      U l        SU R                  l        / U l        / U l        S U l        [        R                  " 5       U l
        Xl        U R                  U5        g )Nr3   Fr6   )rE   rJ   	error_logr4   
access_logerror_handlersaccess_handlerslogfile	threadingLocklockcfgsetup)rY   r   s     rM   rT   Logger.__init__   su     **+;<#( !++,=>$)! !NN$	

3r^   c                 	   U R                   R                  UR                  R                  5       [        R
                  5      U l        U R                  R                  U R                  5        U R                  R                  [        R
                  5        U R                  R                  (       a  UR                  S:w  a  [        R                  [        R                  4 H  nUR                  5         M     [!        UR                  S5      U l        [$        R&                  " U R"                  R)                  5       [        R                  R)                  5       5        [$        R&                  " U R"                  R)                  5       [        R                  R)                  5       5        U R+                  U R                  UR                  [        R,                  " U R.                  U R0                  5      5        UR2                  bR  U R+                  U R                  UR2                  [        R,                  " U R4                  5      [        R                  S9  UR6                  (       a_  U R9                  U R                  XR:                  S5        UR<                  (       d'  U R9                  U R                  XR:                  S5        UR>                  (       a<  [@        RC                  5       nURE                  UR>                  5         [G        U5        g URT                  (       a  [@        RC                  5       n[$        RV                  RY                  URT                  5      (       aG   [Z        R\                  " [!        URT                  5      5      nURE                  U5        [G        U5        g g UR`                  (       a  [$        RV                  RY                  UR`                  5      (       ae  [@        RC                  5       nUR`                  US'   [$        RV                  Rc                  UR`                  5      US'   [e        UR`                  USS	9  g S
n[Q        XqR`                  -  5      eg ! [H        [J        [L        [N        4 a  n[Q        [S        U5      5      eS nAff = f! [Z        R^                  [H        [J        [L        [N        4 a  n[Q        [S        U5      5      eS nAff = f)Nra   a+)fmtr:   r   access__file__hereF)defaultsr@   z Error: log config '%s' not found)3
LOG_LEVELSgetloglevelrc   rE   r.   r   setLevelr   r   capture_outputerrorlogsysstdoutstderrflushopenr   osdup2fileno_set_handler	Formatter	error_fmtr>   	accesslog
access_fmtr   _set_syslog_handler
syslog_fmt!disable_redirect_access_to_sysloglogconfig_dictCONFIG_DEFAULTScopyupdater   AttributeErrorImportError
ValueError	TypeErrorr   rW   logconfig_jsonpathexistsjsonloadJSONDecodeError	logconfigdirnamer   )rY   r   r:   configexcconfig_jsonr   msgs           rM   r   Logger.setup   sM   ++CLL,>,>,@',,O.  . 88""s||s':**cjj0 1  d3DLGGDLL'')3::+<+<+>?GGDLL'')3::+<+<+>?$..#,,!++DNNDLLI	K ==$%%doo6szz   ::$$__g 88((OOS//8 $))+FMM#,,--6" $))+Fww~~c00111"&))D1C1C,D"EKMM+.v&	 2 ]]ww~~cmm,,*//1'*}}$#%77??3==#A 3==849; 9"3#677 + #	 - #3s8,,- ((" 1 's3x001s1   	Q. )AR$ .R!RR!$)S&S!!S&c                 D    U R                   R                  " U/UQ70 UD6  g N)r   r   rY   r   argskwargss       rM   r   Logger.critical  s    5d5f5r^   c                 D    U R                   R                  " U/UQ70 UD6  g r   )r   r   r   s       rM   r   Logger.error      S24262r^   c                 D    U R                   R                  " U/UQ70 UD6  g r   )r   r   r   s       rM   r   Logger.warning  s    s4T4V4r^   c                 D    U R                   R                  " U/UQ70 UD6  g r   )r   r   r   s       rM   r   Logger.info  s    C1$1&1r^   c                 D    U R                   R                  " U/UQ70 UD6  g r   )r   r   r   s       rM   r   Logger.debug  r   r^   c                 D    U R                   R                  " U/UQ70 UD6  g r   )r   	exceptionr   s       rM   r   Logger.exception  s      6t6v6r^   c                     [        U[        5      (       a8  U R                  R                  UR	                  5       [
        R                  5      nU R                  R                  " X/UQ70 UD6  g r   )	rV   rW   r   r   rc   rE   r.   r   log)rY   lvlr   r   r   s        rM   r   
Logger.log  sK    c3//%%ciik7<<@C35d5f5r^   c           	         UR                   n[        U[        5      (       a  UR                  SS5      S   n0 SUR	                  SS5      _SS_SU R                  U5      =(       d    S_S	U R                  5       _S
US   < SUS   < SUS   < 3_SU_SUR	                  S5      _SUR	                  S5      _SUR	                  S5      _SUR	                  S5      _S[        USS5      SL=(       a    [        UR                  5      =(       d    S_S[        USS5      _SUR	                  SS5      _SUR	                  SS5      _SUR                  _SUR                  S-  UR                  -   _S UR                  S!-  [        UR                  S!-  5      -   _S"UR                  UR                  4-  S#[        R                  " 5       -  S$.En[        US%5      (       a  UR                  nOUn[        US&5      (       a  UR!                  5       nUR#                  U VV	s0 s H  u  pS'UR%                  5       -  U	_M     sn	n5        UR                  n
[        U
S&5      (       a  U
R!                  5       n
UR#                  U
 VV	s0 s H  u  pS(UR%                  5       -  U	_M     sn	n5        UR!                  5       nUR#                  U VV	s0 s H  u  pS)UR%                  5       -  U	_M     sn	n5        U$ s  sn	nf s  sn	nf s  sn	nf )*z'Gets atoms for log formatting.
        Nr   r   hREMOTE_ADDRra   lutrREQUEST_METHOD RAW_URISERVER_PROTOCOLsmU	PATH_INFOqQUERY_STRINGHbsentBfHTTP_REFERERaHTTP_USER_AGENTTDi@B Mi  z%d.%06dz<%s>)LpheadersrU   z{%s}iz{%s}oz{%s}e)statusrV   rW   rz   r   	_get_usernowgetattrr   secondsmicrosecondsr   r   getpidhasattrr  rU   r   rc   )rY   respreqenvironrequest_timer  rZ   req_headersrf   vresp_headersenviron_variabless               rM   rZ   Logger.atoms"  s    fc""\\$*1-F
]C0

 (/C
 	

 w'78&y1&'89;
 
 -.
 [)
 ^,
 ./
 vt,D8KS^Rs
 vt,
 ^S1
  .4!
" %%#
$ ,&&0L4M4MM%
& ,&&-\5N5NQU5U1VV'
( l22L4M4MNN"))+%+
2 3	""++KK;((%++-KEg	)1,EF||<))'--/L 	Fg	)1,FG $MMO9JK9Jg	)1,9JKL F G Ls    K5
 K;
 L
c                 V   U R                   R                  (       d  U R                   R                  (       dm  U R                   R                  (       dR  U R                   R                  (       d7  U R                   R
                  (       a  U R                   R                  (       a  gU R                  U R                  XX45      5      n U R                  R                  U R                   R                  U5        g! [         a'    U R                  [        R                  " 5       5         gf = f)zKSee http://httpd.apache.org/docs/2.0/logs.html#combined
for format details
N)r   r   r   r   r   r   r   atoms_wrapper_classrZ   r   r   access_log_format	Exceptionr   	traceback
format_exc)rY   r  r  r  r  
safe_atomss         rM   r   Logger.accessX  s    
 ""dhh&8&888""dhh&=&=HHOODHH$N$N
 --JJt'8

	/OO  !;!;ZH 	/JJy++-.	/s   0C7 7.D('D(c                 .    [         R                  " S5      $ )z(return date in Apache Common Log Format z[%d/%b/%Y:%H:%M:%S %z])timestrftime)rY   s    rM   r  
Logger.nown  s    }}566r^   c                 R   U R                   R                  (       GaI  U R                   R                  S:w  Ga.  [        R                  [        R
                  4 H  nUR                  5         M     U R                     U R                  b  U R                  R                  5         [        U R                   R                  S5      U l        [        R                  " U R                  R                  5       [        R                  R                  5       5        [        R                  " U R                  R                  5       [        R
                  R                  5       5        S S S 5        [        5        H  nUR                   H{  n[!        U["        R$                  5      (       d  M$  UR'                  5          UR(                  (       a%  UR                  5         UR+                  5       Ul        UR-                  5         M}     M     g ! , (       d  f       N= f! UR-                  5         f = f)Nra   r   )r   r   r   r   r   r   r   r   r   closer   r   r   r   rB   r1   rV   rE   FileHandleracquirer:   _openrelease)rY   r:   r   handlers       rM   reopen_filesLogger.reopen_filesr  sM   88"""txx'8'8C'?**cjj0 1 <<+LL&&(#DHH$5$5t<++-szz/@/@/BC++-szz/@/@/BC  9C<<gw':':;;OO%*">>#MMO-4]]_GN) (     )s   ;C#H46H
HH&c                 x   [        5        H  nUR                   H  n[        U[        R                  5      (       d  M$  UR                  5          UR                  (       a.  [        R                  " UR                  R                  5       5        UR                  5         M     M     g ! UR                  5         f = fr   )rB   r1   rV   rE   r#  r$  r:   r   close_on_execr   r&  )rY   r   r'  s      rM   r+  Logger.close_on_exec  sx    9C<<gw':':;;OO%*">> ..w~~/D/D/FG) (   )s   ?B''B9c                 V    UR                    H  n[        USS5      (       d  M  Us  $    g )N	_gunicornF)r1   r  )rY   r   r   s      rM   _get_gunicorn_handlerLogger._get_gunicorn_handler  s$    Aq+u-- r^   Nc                    U R                  U5      nU(       a  UR                  R                  U5        Ub  US:X  a  [        R                  " U5      nOw[
        R                  " U5        [        R                  " U5      n [        R                  " UR                  U R                  R                  U R                  R                  5        UR                  U5        SUl        UR#                  U5        g g ! [         a     N7f = f)Nra   T)r/  r1   removerE   StreamHandlerr   check_is_writabler#  r   chownbaseFilenamer   r   groupOSErrorsetFormatterr.  
addHandler)rY   r   outputr   r:   r   s         rM   r   Logger._set_handler  s    &&s+LL"}))&1&&v.''/HHQ^^TXX]]DHHNNK NN3AKNN1!    s   A
C6 6
DDc                    UR                   =(       d    UR                  R                  SS5      nSU< SU< 3n[        R                  " U< SU< 35      n [
        UR                  R                  5          n[        UR                  5      u  px[        R                  R                  UXgS9n	U	R                  U5        SU	l        UR!                  U	5        g ! [         a    [        S5      ef = f)Nrv   .z	gunicorn.z: zunknown facility name)addressfacilityr   T)syslog_prefix	proc_namerX   rE   r   SYSLOG_FACILITIESsyslog_facilityrc   KeyErrorr   r   syslog_addrr1   SysLogHandlerr9  r.  r:  )
rY   r   r   r   rL   prefixr@  r   r   r   s
             rM   r   Logger._set_syslog_handler  s    ""Ecmm&;&;C&E%+T2 VS 9:	8()<)<)B)B)DEH
 .coo> **44< + Q 	
sq  	8677	8s   !C C.c                    S nUR                  S5      nU(       a  UR                  5       R                  S5      (       a~  UR                  SS5      n[	        U5      S:X  a]   [
        R                  " US   R                  5       R                  S5      5      nUR                  SS5      S   R                  S	5      nU$ U$ ! [        [        R                  [        4 a  nU R                  S
U5         S nAU$ S nAff = f)NHTTP_AUTHORIZATIONbasicr   r   r   zutf-8   :r   zUTF-8zCouldn't get username: %s)r   rc   rb   rz   r{   base64	b64decodestripencodedecoder   binasciiErrorUnicodeDecodeErrorr   )rY   r  r   	http_authr   r   s         rM   r  Logger._get_user  s    KK 45	*55g>>??3*D4yA~A "++DGMMO,B,B7,KLD::dA.q188AD t "8>>3EF AJJ:C@@As   !AB? ?C;C66C;)r   r   r   r   r   r   r   r   r   )%rk   rl   rm   rn   rE   CRITICALERRORWARNINGr.   DEBUGr   r   r   r>   r   r   rO   r  rT   r   r   r   r   r   r   r   r   rZ   r   r  r(  r+  r/  r   r   r  ro   rj   r^   rM   r   r      s     $$??J ||HHI'GJ,J#
F8P6352376
4l/,7*.	*
04r^   r   )rN  rS  r   r  rE   r   rG   emittedNoHandlerWarninglogging.configr   r   r   r|   r   r   r  gunicornr   rC  r   rB   rS   rO   r   rj   r^   rM   <module>r_     s  
     12   . % % 	  
   
A A a	
 
2 A 
1 A A  a A A b b  b!" b#$ + 2  %9+6 ()(	
 ")	
" -"(
 -"(
 	M/(
?&R: .+$\u ur^   