
    rh               
          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      c/var/www/html/ai-insurance-compliance-backend/venv/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        d	 |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infoc              3      K   | ]6  }t        |t              r |j                  d       j                  d      n| 8 yw)unicode_escapeasciiN)
isinstancestrencodedecode).0as     r)   	<genexpr>zlog_response.<locals>.<genexpr>   s<       7AC6H!"))'2aOs   <>)rz   rA   )extrarI   T)r   rz   tupler   )rQ   r   rA   r   r   r   rU   escaped_argss           r)   log_responser      s    ( x+U3}3&E!!S(EE  L
 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+   