o
    ch	                  	   @   s   d Z ddlZddlmZ ddlmZ ddlZddlZej	ej
ejejedd ddlmZ G dd dZe ZdS )	u   
ロギング機能を提供するモジュール
アプリケーション全体で一貫したログ記録を実現します。
    N)RotatingFileHandler)Optionalz..)configc                       s   e Zd ZU dZed  ed<  fddZdd Zdefdd	Z	defd
dZ
defddZddedefddZddedefddZ  ZS )LoggerN	_instancec                    s(   | j d u rt | | _ | j   | j S )N)r   super__new___initialize_logger)cls	__class__ ;/var/www/html/status_management-staging/src/utils/logger.pyr      s   

zLogger.__new__c                 C   s   t d| _| jt j t d}td}t|ddd}|t j |	| t 
 }|t j |	| | j| | j| dS )u   ロガーの初期化status_managementz4%(asctime)s - %(name)s - %(levelname)s - %(message)slog_filei      )maxBytesbackupCountN)logging	getLoggerloggersetLevelDEBUG	Formatterr   get_file_pathr   setFormatterStreamHandlerINFO
addHandler)self	formatterr   file_handlerstream_handlerr   r   r   r	      s$   


zLogger._initialize_loggermessagec                 C      | j | dS )u'   デバッグレベルのログを記録N)r   debugr   r#   r   r   r   r%   4      zLogger.debugc                 C   r$   )u!   情報レベルのログを記録N)r   infor&   r   r   r   r(   8   r'   zLogger.infoc                 C   r$   )u!   警告レベルのログを記録N)r   warningr&   r   r   r   r)   <   r'   zLogger.warningTexc_infoc                 C      | j j||d dS )u$   エラーレベルのログを記録r*   N)r   errorr   r#   r*   r   r   r   r-   @      zLogger.errorc                 C   r+   )u-   クリティカルレベルのログを記録r,   N)r   criticalr.   r   r   r   r0   D   r/   zLogger.critical)T)__name__
__module____qualname__r   r   __annotations__r   r	   strr%   r(   r)   boolr-   r0   __classcell__r   r   r   r   r      s   
 r   )__doc__r   logging.handlersr   typingr   sysospathappendabspathjoindirname__file__config.configr   r   r   r   r   r   r   <module>   s    (
;