o
    i                     @   s   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adada	G dd dej
Zdd Zdd	 ZddededefddZg Zdd Zdd ZdS )    )deque)datetimeNc                       s<   e Zd Z fddZ fddZ fddZdd Z  ZS )	LogInterceptorc                    sL   |j }|j}t j|g|R i |||jd t | _g | _g | _	d S )N)encodingline_buffering)
bufferr   super__init__r   	threadingLock_lock_flush_callbacks_logs_since_flush)selfstreamargskwargsr   r   	__class__ (/mnt/c/Users/fbmor/ComfyUI/app/logger.pyr	      s   &

zLogInterceptor.__init__c                    s   t   |d}| j* | j| t|tr*|dr*t	d d 
ds*t	  t	| W d    n1 s9w   Y  t | d S )N)tmr   
)r   now	isoformatr   r   append
isinstancestr
startswithlogsendswithpopr   write)r   dataentryr   r   r   r%      s   &zLogInterceptor.writec                    s*   t    | jD ]
}|| j g | _qd S N)r   flushr   r   )r   cbr   r   r   r)   "   s
   


zLogInterceptor.flushc                 C   s   | j | d S r(   )r   r   )r   callbackr   r   r   on_flush(   s   zLogInterceptor.on_flush)__name__
__module____qualname__r	   r%   r)   r,   __classcell__r   r   r   r   r      s
    r   c                   C   s   t S r(   )r"   r   r   r   r   get_logs,   s   r1   c                 C   s,   t d ur	t |  td urt|  d S d S r(   )stdout_interceptorr,   stderr_interceptor)r+   r   r   r   r,   0   s
   
r,   INFO,  F	log_levelcapacity
use_stdoutc                 C   s   t rd S t|da ttj at_ttj at_t	 }|
|  t }|td |rQ|dd  ttj}|td |dd  || || d S )N)maxlenz%(message)sc                 S   s   | j tjk  S r(   levelnologgingERRORrecordr   r   r   <lambda>L   s    zsetup_logger.<locals>.<lambda>c                 S   s   | j tjk S r(   r:   r>   r   r   r   r@   Q   s    )r"   r   r   sysstdoutr2   stderrr3   r<   	getLoggersetLevelStreamHandlersetFormatter	Formatter	addFilter
addHandler)r6   r7   r8   loggerstream_handlerstdout_handlerr   r   r   setup_logger6   s    


rN   c                 C   s   t |  t|  d S r(   )r<   warningSTARTUP_WARNINGSr   )msgr   r   r   log_startup_warningZ   s   
rR   c                  C   s    t D ]} t|  qt   d S r(   )rP   r<   rO   clear)sr   r   r   print_startup_warnings_   s   rU   )r4   r5   F)collectionsr   r   ior<   rA   r
   r"   r2   r3   TextIOWrapperr   r1   r,   r    intboolrN   rP   rR   rU   r   r   r   r   <module>   s     !