
    Bi                     j    d dl Z d dlZd dlZd dlmZ d dlmZ  G d d          Z G d d          ZdS )    N)datetime)envc                   (    e Zd ZdZed             ZdS )LoggingConfigu   로깅 설정 클래스c                  l   t          j        dd                                          } t          t          | t          j                  }t	          j        dd          }t	          j                    }|                    |           |j	        dd         D ]}|
                    |           t	          j                    }|                    |           |                    |           |                    |           d}t          j        |d	           t          j	                            t          j                            |d
          ddd          }|                    |           |                    |           |                    |           t          j	                            t          j                            |d          ddd          }|                    t          j                   |                    |           |                    |           t	          j        d                              t          j                   t	          j        d                              t          j                   t	          j        d                              t          j                   |S )u   로깅 설정 초기화	LOG_LEVELINFOz=%(asctime)s [%(levelname)s] %(name)s:%(lineno)d - %(message)sz%Y-%m-%d %H:%M:%S)fmtdatefmtNlogsT)exist_okz	mlink.logi      zutf-8)filenamemaxBytesbackupCountencodingz	error.logurllib3requestschromadb)r   getuppergetattrloggingr	   	Formatter	getLoggersetLevelhandlersremoveHandlerStreamHandlersetFormatter
addHandlerosmakedirsRotatingFileHandlerpathjoinERRORWARNING)		log_levelnumeric_level	formatterroot_loggerhandlerconsole_handlerlog_dirfile_handlererror_handlers	            R/var/www/html/web/mlink/mlink_AI_Server/mlink-backend/src/config/logging_config.pysetup_loggingzLoggingConfig.setup_logging   sp   
 GK006688	GLAA %O'
 
 
	 '))]+++ #+AAA. 	/ 	/G%%g.... "/11  ///$$Y////// 
Gd++++';;W\\';77%	 < 
 
 	m,,,!!),,,|,,,  (<<W\\';77%	 = 
 
 	w}---""9---}--- 	)$$--go>>>*%%..w???*%%..w???    N)__name__
__module____qualname____doc__staticmethodr3    r4   r2   r   r      s3        !!9 9 \9 9 9r4   r   c                       e Zd ZdZdefdZdefdZdefdZdefdZdefdZ	dd
ededefdZ
d
edededefdZdededefdZdedededefdZd	S )StructuredLoggeru.   구조화된 로깅을 위한 헬퍼 클래스namec                 8    t          j        |          | _        d S N)r   r   logger)selfr=   s     r2   __init__zStructuredLogger.__init__K   s    '--r4   messagec                 >    | j                             ||           dS )u   정보 로그extraN)r@   inforA   rC   kwargss      r2   rG   zStructuredLogger.infoN   s#    /////r4   c                 >    | j                             ||           dS )u   경고 로그rE   N)r@   warningrH   s      r2   rK   zStructuredLogger.warningR   s#    G622222r4   c                 >    | j                             ||           dS )u   에러 로그rE   N)r@   errorrH   s      r2   rM   zStructuredLogger.errorV   #    '00000r4   c                 >    | j                             ||           dS )u   디버그 로그rE   N)r@   debugrH   s      r2   rP   zStructuredLogger.debugZ   rN   r4   Nmethodendpointuser_idc                 8     | j         d| d| fd|||d| dS )u   API 요청 로그u   API 요청:  api_request)
event_typerQ   rR   rS   NrG   )rA   rQ   rR   rS   rI   s        r2   log_api_requestz StructuredLogger.log_api_request^   sU    	.6..H..	
$	
 	
 	
 	
 	
 	
 	
r4   status_coderesponse_timec                 J     | j         d| d| d| d|dd	fd||||d| d	S )
u   API 응답 로그u   API 응답: rU    -  (.3fs)api_response)rW   rQ   rR   rZ   r[   NrX   )rA   rQ   rR   rZ   r[   rI   s         r2   log_api_responsez!StructuredLogger.log_api_responsei   sn    	U6UUHUUUUUUUU	
%#'	
 	
 	
 	
 	
 	
 	
r4   user_messageai_response
session_idc           	      `     | j         	 dd|t          |          t          |          d| dS )u   챗봇 상호작용 로그   챗봇 상호작용chatbot_interaction)rW   re   user_message_lengthai_response_lengthN)rg   )rG   len)rA   rc   rd   re   rI   s        r2   log_chatbot_interactionz(StructuredLogger.log_chatbot_interactionu   sU    	!	
,! #L 1 1";//	
 	
 	
 	
 	
 	
 	
r4   servicec                 J     | j         d| d| d| d|dd	fd||||d| d	S )
u   외부 API 호출 로그u   외부 API 호출: rU   r]   r^   r_   r`   external_api_call)rW   rm   rR   rZ   r[   NrX   )rA   rm   rR   rZ   r[   rI   s         r2   log_external_api_callz&StructuredLogger.log_external_api_call   sn    	]']]H]]]]]]]]	
*#'	
 	
 	
 	
 	
 	
 	
r4   r?   )r5   r6   r7   r8   strrB   rG   rK   rM   rP   rY   intfloatrb   rl   rp   r:   r4   r2   r<   r<   H   s[       88.S . . . .0C 0 0 0 03s 3 3 3 31S 1 1 1 11S 1 1 1 1	
 	
c 	
S 	
3 	
 	
 	
 	


s 

c 

 

\a 

 

 

 

	
C 	
c 	
WZ 	
 	
 	
 	


S 

C 

c 

bg 

 

 

 

 

 

r4   r<   )r"   r   logging.handlersr   src.config.env_loaderr   r   r<   r:   r4   r2   <module>rv      s    				            % % % % % %= = = = = = = =@B
 B
 B
 B
 B
 B
 B
 B
 B
 B
r4   