
    %<iK                     ,   d Z ddlZddlZddlmZ ddlmZ  ed      Zej                  dd       ed ej                         j                  d	       d
z  Z
dedej                  fdZddej                  dedefdZddej                  dedefdZy)uR   
중앙 로깅 설정
모든 모듈이 공통으로 사용하는 로깅 시스템
    N)datetime)Pathz/tmp/cokacdir/logsT)parentsexist_okz	cokacdir-z%Y-%m-%dz.lognamereturnc                 `   	 t        j                  |       }|j                  t         j                         |j                  r|S 	 t         j                  j                  t        dd      }|j                  t         j                         t        j                  d      }|j                  |       |j                  |       	 t        j                         }|j                  t         j                         t        j                  d      }|j                  |       |j                  |       |S # t        $ r}t        d|        Y d}~d}~ww xY w# t        $ r}t        d|        Y d}~|S d}~ww xY w# t        $ r-}t        d	|        t        j                  |       cY d}~S d}~ww xY w)
u   
    로거 생성

    Args:
        name: 모듈명 (예: "red_team.code_reviewer")

    Returns:
        설정된 로거
    i      )maxBytesbackupCountz4%(asctime)s - %(name)s - %(levelname)s - %(message)sz(Warning: Failed to create file handler: Nz&%(levelname)s - %(name)s - %(message)sz+Warning: Failed to create console handler: zError setting up logging: )logging	getLoggersetLevelDEBUGhandlersRotatingFileHandlerLOG_FILE	FormattersetFormatter
addHandler	ExceptionprintStreamHandlerERROR)r   loggerfile_handlerfile_formattereconsole_handlerconsole_formatters          F/home/jay/workspace/.worktrees/task-2057-dev2/memory/logging_config.pysetup_loggingr"      s   ''""4(& ??M		B"++??#3 @ L !!'--0$../efN%%n5l+
	E%335O$$W]]3 ' 1 12Z [(():;o. #  	B<QC@AA	B  	E?sCDD 	E  '*1#./  &&'sn   AE7 A<D. A*E ,E7 .	E7E
E7 
EE7 	E4E/)E7 /E44E7 7	F- "F("F-(F-r   actiondetailsc                 X    |r| j                  | d|        y| j                  |       y)uy   
    실행 로그 기록

    Args:
        logger: 로거
        action: 작업명
        details: 상세 정보
    z - N)info)r   r#   r$   s      r!   log_executionr'   H   s*     vhc'+,F    errorcontextc                     |r-| j                  t        |      j                   d| d|        y| j                  t        |      j                   d|        y)u   
    에러 로그 기록

    Args:
        logger: 로거
        error: 에러 객체
        context: 컨텍스트 정보
    z: z - Context: N)r)   type__name__)r   r)   r*   s      r!   	log_errorr.   W   sQ     U,,-Rwl7)LMU,,-Rw78r(   )N)__doc__r   logging.handlersr   pathlibr   LOG_DIRmkdirnowstrftimer   strLoggerr"   dictr'   r   r.    r(   r!   <module>r:      s   
     #
$ dT * y!8!8!D ETJJ1' 1' 1'h'.. #  9gnn 9Y 9 9r(   