o
    ?[d
                     @   s\   d dl Z d dlZd dlZd dlmZ d dlmZ d dlZG dd dejZ	G dd dZ
dS )    N)Path)loggerc                   @   s&   e Zd ZdddddddZdd	 Zd
S )InterceptHandlerCRITICALERRORWARNINGINFODEBUGNOTSET)2   (         
   r   c                 C   s   z	t |jj}W n ty   | j|j }Y nw t d}}|j	j
tjkr5|j}|d7 }|j	j
tjks't jdd}|j||jd||  d S )N      app)
request_id)depth	exception)r   level	levelnamenameAttributeErrorloglevel_mappinglevelnologgingcurrentframef_codeco_filename__file__f_backbindoptexc_infolog
getMessage)selfrecordr   framer   r%    r*   6D:\Vignesh\Freelance\Astroved\api_v1\config\logging.pyemit   s    zInterceptHandler.emitN)__name__
__module____qualname__r   r,   r*   r*   r*   r+   r      s    	r   c                   @   sL   e Zd ZedefddZedededededef
d	d
Zedd ZdS )CustomizeLoggerconfig_pathc                 C   sJ   |  |}|d}| j|d|d|d|d|dd}|S )Nr   pathr   	retentionrotationformat)r   r3   r4   r5   )load_logging_configgetcustomize_logging)clsr1   configZlogging_configr   r*   r*   r+   make_logger)   s   

zCustomizeLogger.make_loggerfilepathr   r4   r3   r5   c              	   C   s   t   t jtjdd| |d t jt|||dd| |d tjt	 gdd t	 gt
d_dD ]}t
|}t	 g|_q4t jd d dS )	NT)enqueue	backtracer   r5   )r4   r3   r=   r>   r   r5   r   )handlersr   zuvicorn.access)uvicornzuvicorn.errorfastapi)r   method)r   removeaddsysstdoutupperstrr   basicConfigr   	getLoggerr?   r"   )r9   r<   r   r4   r3   r5   _log_loggerr*   r*   r+   r8   8   s.   		
z!CustomizeLogger.customize_loggingc                 C   sV   d }t |}t|}W d    n1 sw   Y  tjt dd|d d< |S )Nr:   zlogs.logr   r2   )openjsonloadosr2   joingetcwd)r9   r1   r:   Zconfig_filer*   r*   r+   r6   _   s   
z#CustomizeLogger.load_logging_configN)	r-   r.   r/   classmethodr   r;   rH   r8   r6   r*   r*   r*   r+   r0   '   s"    &r0   )rP   r   rE   pathlibr   Zlogurur   rN   Handlerr   r0   r*   r*   r*   r+   <module>   s   