o
    h;                  
   @   s  d dl Z d dlZd dlZd dlZd dlZdejj_d dlm	Z	 d dlm
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 i dddd	d
ddddddd dddddddddddddddddd d!d"d#d$d%d&d'd(d)Zdd*d+d,gd-d+d.gd/d0d1d+d,gd/d2d1d3d4d5d6d7d4d5d8d7d9d5d:d;d<d=id>Zd?d@ ZG dAdB dBeZdCdD ZG dEdF dFZdS )G    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)r/   r0   	propagatequalnamegunicorn.access)r2   r5   zlogging.StreamHandlergenericzext://sys.stdout)class	formatterstreamzext://sys.stderr)r.   r1   5%(asctime)s [%(process)d] [%(levelname)s] %(message)s[%Y-%m-%d %H:%M:%S %z]zlogging.Formatter)formatdatefmtr7   )versiondisable_existing_loggersrootloggersr0   
formattersc                  C   s$   t j} t| jj }dd |D S )z get list of all loggers c                 S   s   g | ]}t |qS  )logging	getLogger).0namerC   rC   I/var/www/vip_panel/venv/lib/python3.10/site-packages/gunicorn/glogging.py
<listcomp>\   s    zloggers.<locals>.<listcomp>)rD   r@   listmanager
loggerDictkeys)r@   existingrC   rC   rH   rA   X   s   rA   c                       s$   e Zd Zdd Z fddZ  ZS )	SafeAtomsc                 C   sD   t |  | D ]\}}t|tr|dd| |< q	|| |< q	d S )N"z\")dict__init__items
isinstancestrreplace)selfatomskeyvaluerC   rC   rH   rR   a   s   


zSafeAtoms.__init__c                    sB   | dr| }|| v rt |S dS || v rt |S dS )N{-)
startswithlowersuper__getitem__)rW   kkl	__class__rC   rH   r`   i   s   
zSafeAtoms.__getitem__)__name__
__module____qualname__rR   r`   __classcell__rC   rC   rc   rH   rO   _   s    rO   c                 C   sL  |  dr)d }| dd}t|dkr |d } |d dkr tj}|| dd fS |  dr9| dd } tj}n|  drI| dd } tj}ntd	d
| v rcd| v rc| dd dd   }nd| v rq| dd  }n| dkrxd}n|  }| dd } d| v r| ddd }| std| t	|}nd}|||ffS )Nzunix://#r   r   r   dgramzudp://ztcp://zinvalid syslog address[]: 	localhostz%r is not a valid port number.i  )
r]   splitlensocket
SOCK_DGRAMSOCK_STREAMRuntimeErrorr^   isdigitint)addr	sock_typepartssocktypehostportrC   rC   rH   parse_syslog_addressv   s<   



r   c                   @   s   e Zd ZejejejejejdZ	ejZ
dZdZdZdZeZdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd+d%d&Z d'd( Z!d)d* Z"d$S ),Logger)criticalerrorwarninginfodebugr:   r;   z%(message)sz[%(process)d] %(message)sc                 C   sX   t d| _d| j_t d| _d| j_g | _g | _d | _t	 | _
|| _| | d S )Nr2   Fr5   )rD   rE   	error_logr3   
access_logerror_handlersaccess_handlerslogfile	threadingLocklockcfgsetup)rW   r   rC   rC   rH   rR      s   
zLogger.__init__c                 C   sP  | j |j tj| _| j| j | jtj | j	j
rO|jdkrOtjtjfD ]}|  q)t|jd| _t| j tj  t| j tj  | | j|jt| j| j |jd urs| j| j|jt| jtjd |jr| | j|| jd |js| | j|| jd |jrt ! }|"|j zt#| W d S  t$t%t&t'fy } zt(t)|d }~ww |j*rt ! }tj+,|j*rzt-.t|j*}|"| t#| W d S  t-j/t$t%t&t'fy } zt(t)|d }~ww d S |j0r&tj+,|j0rt ! }|j0|d< tj+1|j0|d< t2|j0|dd	 d S d
}t(||j0 d S )Nr\   a+)fmtr9   r   access__file__hereF)defaultsr?   z Error: log config '%s' not found)3
LOG_LEVELSgetloglevelr^   rD   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	TypeErrorrv   rU   logconfig_jsonpathexistsjsonloadJSONDecodeError	logconfigdirnamer   )rW   r   r9   configexcconfig_jsonr   msgrC   rC   rH   r      s   




zLogger.setupc                 O      | j j|g|R i | d S N)r   r   rW   r   argskwargsrC   rC   rH   r        zLogger.criticalc                 O   r   r   )r   r   r   rC   rC   rH   r     r   zLogger.errorc                 O   r   r   )r   r   r   rC   rC   rH   r     r   zLogger.warningc                 O   r   r   )r   r   r   rC   rC   rH   r     r   zLogger.infoc                 O   r   r   )r   r   r   rC   rC   rH   r     r   zLogger.debugc                 O   r   r   )r   	exceptionr   rC   rC   rH   r     r   zLogger.exceptionc                 O   s>   t |tr| j| tj}| jj||g|R i | d S r   )	rT   rU   r   r   r^   rD   r-   r   log)rW   lvlr   r   r   rC   rC   rH   r     s   
 z
Logger.logc           
      C   s  |j }t|tr|ddd }i d|ddddd| |p"dd	|  d
d|d |d |d f d|d|dd|dd|dd|ddt|dddur_t|jp`ddt|ddd|ddd|ddd|j	d|j	d |j
 d |j	d! t|j
d!  d"|j	|j
f d#t  d$}t|d%r|j}n|}t|d&r| }|d'd( |D  |j}t|d&r| }|d)d( |D  | }	|d*d( |	D  |S )+z( Gets atoms for log formatting.
        Nr   r   hREMOTE_ADDRr\   lutrz%s %s %s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headersrS   c                 S      i | ]\}}d |   |qS )z{%s}ir^   rF   ra   vrC   rC   rH   
<dictcomp>I      z Logger.atoms.<locals>.<dictcomp>c                 S   r   )z{%s}or   r   rC   rC   rH   r   P  r   c                 S   r   )z{%s}er   r   rC   rC   rH   r   T  r   )statusrT   rU   rq   r   	_get_usernowgetattrr   secondsmicrosecondsrx   r   getpidhasattrr   rS   r   )
rW   respreqenvironrequest_timer   rX   req_headersresp_headersenviron_variablesrC   rC   rH   rX   "  sr   


	







zLogger.atomsc                 C   s   | j js| j js| j js| j js| j jr| j jrdS | | ||||}z| j	
| j j| W dS  tyB   | t  Y dS w )z\ See http://httpd.apache.org/docs/2.0/logs.html#combined
        for format details
        N)r   r   r   r   r   r   r   atoms_wrapper_classrX   r   r   access_log_format	Exceptionr   	traceback
format_exc)rW   r   r   r   r   
safe_atomsrC   rC   rH   r   X  s$   zLogger.accessc                 C   s
   t dS )z) return date in Apache Common Log Format z[%d/%b/%Y:%H:%M:%S %z])timestrftime)rW   rC   rC   rH   r   n  s   
z
Logger.nowc              
   C   s  | j jrT| j jdkrTtjtjfD ]}|  q| j2 | jd ur%| j	  t
| j jd| _t| j tj  t| j tj  W d    n1 sOw   Y  t D ]*}|jD ]$}t|tjr|  z|jru|	  | |_W |  q\|  w q\qWd S )Nr\   r   )r   r   r   r   r   r   r   r   r   closer   r   r   r   rA   r0   rT   rD   FileHandleracquirer9   _openrelease)rW   r9   r   handlerrC   rC   rH   reopen_filesr  s.   





zLogger.reopen_filesc              
   C   s^   t  D ])}|jD ]#}t|tjr+|  z|jr t|j	  W |
  q|
  w qqd S r   )rA   r0   rT   rD   r  r  r9   r   close_on_execr   r  )rW   r   r  rC   rC   rH   r
    s   

zLogger.close_on_execc                 C   s$   |j D ]}t|ddr|  S qd S )N	_gunicornF)r0   r   )rW   r   r   rC   rC   rH   _get_gunicorn_handler  s
   
zLogger._get_gunicorn_handlerNc                 C   s   |  |}|r|j| |d urL|dkrt|}n"t| t|}zt	|j
| jj| jj W n	 ty<   Y nw || d|_|| d S d S )Nr\   T)r  r0   removerD   StreamHandlerr   check_is_writabler  r   chownbaseFilenamer   r   groupOSErrorsetFormatterr  
addHandler)rW   r   outputr   r9   r   rC   rC   rH   r     s"   



zLogger._set_handlerc           
      C   s   |j p	|jdd}d||f }td||f }z	t|j  }W n ty-   t	dw t
|j\}}tjj|||d}	|	| d|	_||	 d S )Nrm   .zgunicorn.%s.%sz%s: %szunknown facility name)addressfacilityr|   T)syslog_prefix	proc_namerV   rD   r   SYSLOG_FACILITIESsyslog_facilityr^   KeyErrorrv   r   syslog_addrr0   SysLogHandlerr  r  r  )
rW   r   r   r   rG   prefixr  r|   ry   r   rC   rC   rH   r     s   
zLogger._set_syslog_handlerc              
   C   s   d }| d}|rT| drT|dd}t|dkrTzt|d  d}|ddd 	d	}W |S  t
tjtfyS } z| d
| W Y d }~|S d }~ww |S )NHTTP_AUTHORIZATIONbasic r   r   zutf-8   :r   zUTF-8zCouldn't get username: %s)r   r^   r]   rq   rr   base64	b64decodestripencodedecoder   binasciiErrorUnicodeDecodeErrorr   )rW   r   r   	http_authr   r   rC   rC   rH   r     s   
zLogger._get_userr   )#re   rf   rg   rD   CRITICALERRORWARNINGr-   DEBUGr   r   r   r=   r   r   rO   r   rR   r   r   r   r   r   r   r   r   rX   r   r   r	  r
  r  r   r   r   rC   rC   rC   rH   r      s>    H6
r   )r&  r+  r   r  rD   r   rK   emittedNoHandlerWarninglogging.configr   r   r   rs   r   r   r   gunicornr   r  r   rA   rQ   rO   r   rC   rC   rC   rH   <module>   s   
	

).