
    k(j                        d Z ddlmZ ddlZddlmZ ddlmZ  ee          	                                j
        d         Zedz  ZdZd	addZddZdS )u   结构化日志:同时落盘(轮转)与输出控制台。关键路径用它记录(PRD §10)。

通过日志落盘做 debug——文件在 logs/genesis.log,带时间戳/级别/模块/上下文。
    )annotationsN)RotatingFileHandler)Path   logsz6%(asctime)s | %(levelname)-5s | %(name)s | %(message)sFreturnNonec                 &   t           rd S t                              d           t          j        d          } |                     t          j                   d| _        t          t          dz  ddd	          }|	                    t          j
        t                               t          j                    }|	                    t          j
        t                               |                     |           |                     |           da d S )
NT)exist_okgenesisFzgenesis.logi@KL    zutf-8)maxBytesbackupCountencoding)_configured_LOG_DIRmkdirlogging	getLoggersetLevelINFO	propagater   setFormatter	Formatter_FMTStreamHandler
addHandler)rootfile_handlerconsoles      4/root/genesis-world/src/genesis/obs/logging_setup.py_configure_rootr"      s     NNDN!!!Y''DMM',DN&= 9!g  L g/55666#%%G*400111OOL!!!OOGKKK    namestrlogging.Loggerc                L    t                       t          j        d|            S )uT   取一个挂在 genesis 命名空间下的 logger(首次调用时初始化落盘)。zgenesis.)r"   r   r   )r$   s    r!   
get_loggerr(   '   s(    ...///r#   )r   r	   )r$   r%   r   r&   )__doc__
__future__r   r   logging.handlersr   pathlibr   __file__resolveparents_PROJECT_ROOTr   r   r   r"   r(    r#   r!   <module>r2      s    
 # " " " " "  0 0 0 0 0 0      X&&((036!?   *0 0 0 0 0 0r#   