o
    àÙ·ij  ã                   @   sº   d dl Z d dlZd dlZd dlmZ ddlmZ dZdZ	ej
Zee e ¡ d ƒZejZG dd„ de jƒZe  d¡Zdadai Zd	d
„ Zeƒ  defdd„Ze jfde jdedefdd„ZdS )é    Né   )ÚENVz?%(levelname)s %(asctime)s [%(filename)s:%(lineno)d] %(message)sz%m-%d %H:%M:%Sc                   @   s"   e Zd ZdZddd„Zdd„ ZdS )ÚNewLineFormatterz=Adds logging prefix to newlines to align multi-line messages.Nc                 C   s   t j | ||¡ d S ©N)ÚloggingÚ	FormatterÚ__init__)ÚselfÚfmtÚdatefmt© r   úD/home/ubuntu/.local/lib/python3.10/site-packages/cache_dit/logger.pyr      s   zNewLineFormatter.__init__c                 C   s<   t j | |¡}|jdkr| |j¡}| dd|d  ¡}|S )NÚ Ú
z
r   )r   r   ÚformatÚmessageÚsplitÚreplace)r	   ÚrecordÚmsgÚpartsr   r   r   r      s
   
zNewLineFormatter.formatr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s    
r   Ú	CACHE_DITc               
   C   sî   t  t¡ tttd} td u r$t t	j
¡at	j
jt_t t¡ t  t¡ td u rmtd urmtj t¡sWzt t¡ W n tyV } zt  dt› d|› ¡ W Y d }~nd }~ww t td ¡at t¡ t | ¡ t  t¡ t | ¡ dt _d S )N©r   úError creating directory ú : z/default.logF)Ú_root_loggerÚsetLevelÚ
_LOG_LEVELr   Ú_FORMATÚ_DATE_FORMATÚ_default_handlerr   ÚStreamHandlerÚsysÚstdoutÚflushÚ
addHandlerÚ_default_file_handlerÚ_LOG_DIRÚosÚpathÚexistsÚmakedirsÚOSErrorÚwarnÚFileHandlerÚsetFormatterÚ	propagate)r
   Úer   r   r   Ú_setup_logger#   s*   



"€ÿ




r6   Únamec              
   C   s$  t  ¡ }t | ¡}| t¡ | t¡ td ur!|d u r!| t	¡ nltd urt
 |d ¡d ur5| t
| ¡ nXt j t¡s`zt  t¡ W n ty_ } zt dt› d|› ¡ W Y d }~nd }~ww t td|› d ¡t
|< t
|  t¡ t
|  tttd¡ t t
| ¡ | t
| ¡ d|_|S )Nr   r   z	/process.z.logr   F)r,   Úgetpidr   Ú	getLoggerr    r!   r)   r$   r+   r*   Ú_inference_log_file_handlerÚgetr-   r.   r/   r0   r   r1   r2   r3   r   r"   r#   r4   )r7   ÚpidÚloggerr5   r   r   r   Úinit_loggerF   s2   


"€ÿ
ÿr>   r=   r   Úlevelc                    st   t ˆtjƒs
tdƒ‚t ˆtƒstdƒ‚t ˆ tƒstdƒ‚‡ ‡‡fdd„}t ¡ r5t ¡ dkr3|ƒ  d S d S |ƒ  d S )Nz,logger must be an instance of logging.Loggerzmessage must be a stringz5level must be an integer representing a logging levelc                      sV   ˆ t jkrˆ ˆ¡ d S ˆ t jkrˆ ˆ¡ d S ˆ t jkr$ˆ ˆ¡ d S ˆ ˆ¡ d S r   )r   ÚDEBUGÚdebugÚWARNINGÚwarningÚERRORÚerrorÚinfor   ©r?   r=   r   r   r   Ú_logging_msgj   s   


z$logging_rank_0.<locals>._logging_msgr   )	Ú
isinstancer   ÚLoggerÚ	TypeErrorÚstrÚintÚdistÚis_initializedÚget_rank)r=   r   r?   rH   r   rG   r   Úlogging_rank_0b   s   



ÿ
rQ   )r   r,   r&   Útorch.distributedÚdistributedrN   Úenvsr   r"   r#   ÚCACHE_DIT_LOG_LEVELr!   ÚgetattrÚupperÚCACHE_DIT_LOG_DIRr+   r   r   r9   r   r$   r*   r:   r6   rL   r>   ÚINFOrJ   rM   rQ   r   r   r   r   Ú<module>   s&    
 "