
    k"g              
          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 d dl	m
Z
 d dlmZ  e j                  d      Zd	d
ddiddiddddddiddgddddddddgdddddgdddgdd
d d!d"Zd# Z G d$ d%e j"                        Z G d& d'e j&                        Z G d( d)e j&                        Z G d* d+e j&                        Z G d, d-e j.                        Zddeddd.d/Zy)0    N)copy)settings)mail)get_connection)color_style)import_stringzdjango.request   F()z"django.utils.log.RequireDebugFalsez!django.utils.log.RequireDebugTrue)require_debug_falserequire_debug_truedjango.serverz django.utils.log.ServerFormatterz[{server_time}] {message}{)r
   formatstyleINFOr   zlogging.StreamHandler)levelfiltersclass)r   r   	formatterERRORr   z"django.utils.log.AdminEmailHandler)consoler   mail_adminsr   r   )handlersr   )r   r   	propagate)djangor   )versiondisable_existing_loggersr   
formattersr   loggersc                 |    | r:t        |       }t        j                  j                  t               |r	 ||       y y y N)r   loggingconfig
dictConfigDEFAULT_LOGGING)logging_configlogging_settingslogging_config_funcs      I/var/www/html/djangosite/lib/python3.12/site-packages/django/utils/log.pyconfigure_loggingr*   C   s:    +N;!!/2  01      c                   <     e Zd ZdZd fd	Zd Zd Zd Zd Z xZ	S )AdminEmailHandlerzAn exception log handler that emails log entries to site admins.

    If the request is passed as the first argument to the log record,
    request data will be provided in the email report.
    c                     t         |           || _        || _        t	        |xs t
        j                        | _        y r!   )super__init__include_htmlemail_backendr   r   DEFAULT_EXCEPTION_REPORTERreporter_class)selfr1   r2   r4   	__class__s       r)   r0   zAdminEmailHandler.__init__V   s9    (*+AhAA
r+   c                    t         j                  s'| j                  j                  t        j                  u ry 	 |j
                  }|j                  d|j                  j                  d      t         j                  v rdndd|j                         }| j                  |      }t        |      }d |_        d |_        |j                  r|j                  }nd |j                         d f} | j                   |g|ddi}| j#                  |      d	|j%                         }| j&                  r|j)                         nd }| j                  ||d|
       y # t        $ r$ |j                  d|j                         }d }Y w xY w)Nz (REMOTE_ADDRinternalEXTERNALz IP): z: is_emailTz

)fail_silentlyhtml_message)r   ADMINS	send_mail__func__r-   request	levelnameMETAgetINTERNAL_IPS
getMessage	Exceptionformat_subjectr   exc_infoexc_textr4   r   get_traceback_textr1   get_traceback_html)	r5   recordrA   subjectno_exc_recordrI   reportermessager=   s	            r)   emitzAdminEmailHandler.emit^   si    ''+<+F+FF	nnG   ||''6(:O:OO #$ !!#G %%g. V!%!%??Hf//148H&4&&wIIIKK&'')
 9=8I8Ix224twt,W-  	"("2"2F4E4E4GHGG	s   AE *FFc                 X    t        j                  ||g|d| j                         i| y )N
connection)r   r   rT   )r5   rN   rQ   argskwargss        r)   r?   zAdminEmailHandler.send_mail   s4    W	
#	
040A	
EK	
r+   c                 0    t        | j                  d      S )NT)backendr<   )r   r2   r5   s    r)   rT   zAdminEmailHandler.connection   s    d&8&8MMr+   c                 F    |j                  dd      j                  dd      S )z.
        Escape CR and LF characters.
        
z\nz\r)replace)r5   rN   s     r)   rH   z AdminEmailHandler.format_subject   s"     tU+33D%@@r+   )FNN)
__name__
__module____qualname____doc__r0   rR   r?   rT   rH   __classcell__r6   s   @r)   r-   r-   O   s%    
)XV

NAr+   r-   c                       e Zd ZdZd Zd Zy)CallbackFilterz
    A logging filter that checks the return value of a given callable (which
    takes the record-to-be-logged as its only parameter) to decide whether to
    log a record.
    c                     || _         y r!   callback)r5   rh   s     r)   r0   zCallbackFilter.__init__   s	     r+   c                 (    | j                  |      ryy)Nr	   r   rg   r5   rM   s     r)   filterzCallbackFilter.filter   s    == r+   N)r^   r_   r`   ra   r0   rk    r+   r)   re   re      s    !r+   re   c                       e Zd Zd Zy)RequireDebugFalsec                 $    t         j                   S r!   r   DEBUGrj   s     r)   rk   zRequireDebugFalse.filter   s    >>!!r+   Nr^   r_   r`   rk   rl   r+   r)   rn   rn      s    "r+   rn   c                       e Zd Zd Zy)RequireDebugTruec                 "    t         j                  S r!   rp   rj   s     r)   rk   zRequireDebugTrue.filter   s    ~~r+   Nrr   rl   r+   r)   rt   rt      s    r+   rt   c                   2     e Zd ZdZ fdZ fdZd Z xZS )ServerFormatterz%d/%b/%Y %H:%M:%Sc                 B    t               | _        t        |   |i | y r!   )r   r   r/   r0   )r5   rU   rV   r6   s      r)   r0   zServerFormatter.__init__   s     ]
$)&)r+   c                    |j                   }t        |dd       }|rd|cxk  rdk  rn n| j                  j                  |      }nd|cxk  rdk  rn n| j                  j	                  |      }n|dk(  r| j                  j                  |      }nd|cxk  rdk  rn n| j                  j                  |      }nf|dk(  r| j                  j                  |      }nEd|cxk  rdk  rn n| j                  j                  |      }n| j                  j                  |      }| j                         r-t        |d	      s!| j                  || j                        |_        ||_         t        | A  |      S )
Nstatus_code   i,  d   i0    i    server_time)msggetattrr   HTTP_SUCCESS	HTTP_INFOHTTP_NOT_MODIFIEDHTTP_REDIRECTHTTP_NOT_FOUNDHTTP_BAD_REQUESTHTTP_SERVER_ERRORuses_server_timehasattr
formatTimedatefmtr   r/   r   )r5   rM   r   rz   r6   s       r)   r   zServerFormatter.format   s1   jjfmT:k'C'jj--c2)c)jj**3/#jj2237)c)jj..s3#jj//4)c)jj11#6 jj2237  "76=+I!%!FF
w~f%%r+   c                 >    | j                   j                  d      dk\  S )Nz{server_time}r   )_fmtfindrY   s    r)   r   z ServerFormatter.uses_server_time   s    yy~~o.!33r+   )r^   r_   r`   default_time_formatr0   r   r   rb   rc   s   @r)   rw   rw      s    -*&84r+   rw   )responserA   loggerr   	exceptionc                    t        |dd      ry|&|j                  dk\  rd}n|j                  dk\  rd}nd} t        ||      | g||j                  |d	|d
 d|_        y)a  
    Log errors based on HttpResponse status.

    Log 5xx responses as errors and 4xx responses as warnings (unless a level
    is given as a keyword argument). The HttpResponse status_code and the
    request are passed to the logger's extra parameter.
    _has_been_loggedFNr~   errorr}   warninginfo)rz   rA   )extrarI   T)r   rz   r   )rQ   r   rA   r   r   r   rU   s          r)   log_responser      s    ( x+U3}3&E!!S(EEGFE	 $//
  !%Hr+   )r"   logging.configr   django.confr   django.corer   django.core.mailr   django.core.management.colorr   django.utils.module_loadingr   	getLoggerrequest_loggerr%   r*   Handlerr-   Filterre   rn   rt   	Formatterrw   r   rl   r+   r)   <module>r      sP         + 4 5"""#34  % 6 
 5
	 	41
 ,-,
 ,(
 -.9
& #M2

 ))

G.b	2FA FARW^^  " "
w~~ 
$4g'' $4T 
(%r+   