o
    <Ôc,  ã                   @   s6   d dl Z d dlmZ G dd„ deƒZG dd„ dƒZdS )é    N)ÚEnumc                   @   s    e Zd ZdZdZdZdZdZdS )Úloglevelr   é   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚDEBUGÚINFOÚWARNINGÚERRORÚCRITICAL© r   r   úD/home/exouser/operations/rsmas_insar/minsar/objects/rsmas_logging.pyr      s    r   c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zejd
fdd„Z	dS )ÚRsmasLoggerNc                 C   sT   d| _ d | _d | _t ¡ | _|| _| j tj¡ t	| jj
ƒdkr(|  | j ¡ d S d S )Nz)%(asctime)s - %(levelname)s - %(message)sr   )ÚformatÚconsole_handlerÚfile_handlerÚloggingZ	getLoggerÚloggerÚlogfile_nameÚsetLevelr   ÚlenÚhandlersÚ
set_format)ÚselfÚ	file_namer   r   r   Ú__init__   s   
ÿzRsmasLogger.__init__c                 C   s,   t j| jdd d}| t j¡ | |¡ |S )Nza+)Úencoding)r   ÚFileHandlerr   r   r   ÚsetFormatter)r   Ú	formatterr   r   r   r   Úsetup_filehandler   s   
zRsmasLogger.setup_filehandlerc                 C   s"   t  ¡ }| t j¡ | |¡ |S ©N)r   ZStreamHandlerr   r   r"   )r   r#   r   r   r   r   Úsetup_consolehandler!   s   
z RsmasLogger.setup_consolehandlerc                 C   s   | j  | j¡ | j  | j¡ || _t | j¡}|  |¡| _| j  | j¡ dd„ | j j	D ƒ}t
|ƒdkr:|  |¡| _n|d | _| j  | j¡ d S )Nc                 S   s   g | ]
}t |tjƒs|‘qS r   )Ú
isinstancer   r!   )Ú.0Úhr   r   r   Ú
<listcomp>1   s    z*RsmasLogger.set_format.<locals>.<listcomp>r   )r   ZremoveHandlerr   r   r   r   Z	Formatterr$   Z
addHandlerr   r   r&   )r   Z
new_formatr#   ZstreamHandlersr   r   r   r   '   s   
zRsmasLogger.set_formatÚ c                 O   sÐ   |t ju r| jj|g|¢R i |¤Ž d S |t ju r(| jj|g|¢R i |¤Ž d S |t ju r<| jj|g|¢R i |¤Ž d S |t ju rP| jj	|g|¢R i |¤Ž d S |t j
u rd| jj|g|¢R i |¤Ž d S tdƒ‚)Nzd
Level should be one of the standard python logging error levels: 
DEBUG
INFO
WARNING
ERROR
CRITICAL)r   r   r   Údebugr   Úinfor   Zwarningr   Úerrorr   ZcriticalÚ
ValueError)r   ÚlevelÚmessageÚargsÚkwargsr   r   r   Úlog:   s   




zRsmasLogger.logr%   )
r   r	   r
   r   r$   r&   r   r   r   r4   r   r   r   r   r      s    
r   )r   Úenumr   r   r   r   r   r   r   Ú<module>   s    