o
    bi                     @   sz   d dl Z d dlZd dlZd dlmZ dZdd Zdeee jf fddZ	G d	d
 d
e j
Zdae Zdd Zdd ZdS )    N)Union_ray_timestamp_nsc                  C   s   t jjt ji} | ttt jjj  |  D ]&\}}t	|t j
r?td| d|j d|j  |jD ]	}td|  q5qdS )zCPrint a formatted list of loggers and their handlers for debugging.z  z: disabled=z, propagate=z    N)loggingrootnameupdatedictsortedmanager
loggerDictitems
isinstanceLoggerprintdisabled	propagatehandlers)loggersr   loggerhandler r   D/home/ubuntu/.local/lib/python3.10/site-packages/ray/_private/log.py_print_loggers	   s   
r   r   c                 C   s(   t | tr
t| } d| _| j  dS )ztReset a logger, clearing its handlers and enabling propagation.

    Args:
        logger: Logger to be cleared
    TN)r   strr   	getLoggerr   r   clear)r   r   r   r   clear_logger   s   

r   c                       s0   e Zd ZdZ fddZdejfddZ  ZS )PlainRayHandlerzA plain log handler.

    This handler writes to whatever sys.stderr points to at emit-time,
    not at instantiation time. See docs for logging._StderrHandler.
    c                    s2   t    t | _| j| j_tjdd| j_d S )Nz%(message)s)fmt)super__init__r   _StderrHandlerplain_handlerlevel	Formatter	formatter)self	__class__r   r   r    '   s   


zPlainRayHandler.__init__recordc                 C   sV   ddl }t|dr"t|jdr"|jjjj|jjjkr"| j| dS t	j
| | dS )a  Emit the log message.

        If this is a worker, bypass fancy logging and just emit the log record.
        If this is the driver, emit the message using the appropriate console handler.

        Args:
            record: Log record to be emitted
        r   N_privateworker)rayhasattrr*   r+   global_workermodeWORKER_MODEr"   emitr   r!   )r&   r)   r,   r   r   r   r1   -   s   	

zPlainRayHandler.emit)	__name__
__module____qualname____doc__r    r   	LogRecordr1   __classcell__r   r   r'   r   r       s    r   Fc                     s"   t    fdd} t |  dS )z?Setup log record factory to add _ray_timestamp_ns to LogRecord.c                     s.    | i |}t  }|d |_||jt< |S )Ng    eA)timetime_nscreated__dict__INTERNAL_TIMESTAMP_LOG_KEY)argskwargsr)   ctold_factoryr   r   record_factoryK   s
   

z1_setup_log_record_factory.<locals>.record_factoryN)r   getLogRecordFactorysetLogRecordFactory)rB   r   r@   r   _setup_log_record_factoryG   s   rE   c                  C   s   t D tr	 W d   dS datd} t }||  td}|tj |	| d|_
td}|tj t  W d   dS 1 sIw   Y  dS )z/Generate the default Ray logging configuration.NTz@%(asctime)s	%(levelname)s %(filename)s:%(lineno)s -- %(message)sr,   Fz	ray.rllib)logging_config_locklogger_initializedr   r$   r   setFormatterr   setLevelINFO
addHandlerr   WARNrE   )plain_formatterdefault_handler
ray_loggerrllib_loggerr   r   r   generate_logging_config[   s$   



"rQ   )r   	threadingr8   typingr   r<   r   r   r   r   StreamHandlerr   rG   LockrF   rE   rQ   r   r   r   r   <module>   s    #