U
    0bˆh¸  ã                   @   sz   d Z dZdZddlZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZ G dd	„ d	ƒZd
d„ Zedd„ ƒZdd„ ZdS )zCopyright 2021, 3LizzGPL version 3zinfo@3liz.orgé    N)Úcontextmanager)ÚQgisÚQgsMessageLog)ÚPLUGINc                   @   sT   e Zd Zeedœdd„ƒZeedœdd„ƒZeedœdd„ƒZeedœd	d
„ƒZ	dS )ÚLogger©Úmessagec                 C   s   t  t| ƒttj¡ d S ©N)r   Ú
logMessageÚstrr   r   ÚInfor   © r   ú</var/www/lizmap/lizmap/plugins/wfsOutputExtension/logging.pyÚinfo   s    zLogger.infoc                 C   s   t  t| ƒttj¡ d S r	   )r   r
   r   r   r   ÚWarningr   r   r   r   Úwarning   s    zLogger.warningc                 C   s   t  t| ƒttj¡ d S r	   )r   r
   r   r   r   ÚCriticalr   r   r   r   Úcritical   s    zLogger.critical©Úec                 C   s   t  d| › dt ¡ › ¡ dS )z Log a Python exception. zCritical exception:
Ú
N)r   r   Ú	tracebackÚ
format_excr   r   r   r   Úlog_exception!   s    zLogger.log_exceptionN)
Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r   r   ÚBaseExceptionr   r   r   r   r   r      s   r   c                    s   ‡ fdd„}|S )z$ Decorator to catch all exceptions. c               
      s@   zˆ | |Ž W n, t k
r: } zt |¡ W 5 d }~X Y nX d S r	   ©Ú	Exceptionr   r   )ÚargsÚkwargsr   ©Úfuncr   r   Úinner_function)   s    z)exception_handler.<locals>.inner_functionr   )r$   r%   r   r#   r   Úexception_handler'   s    r&   c               
   c   s<   z
dV  W n, t k
r6 }  zt | ¡ W 5 d} ~ X Y nX dS )z3 Define a trap context for catching all exceptions Nr   r   r   r   r   Útrap1   s    
r'   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )z Decorator to log function. c                     s@   t   ¡ }ˆ | |Ž}t   ¡ }t ˆ j› dt|| dƒ› d¡ |S )Nz ran in é   Ús)Útimer   r   r   Úround)r!   r"   ÚstartÚvalueÚendr#   r   r   Úlog_function_core<   s
    
"z'log_function.<locals>.log_function_core)Ú	functoolsÚwraps)r$   r/   r   r#   r   Úlog_function:   s    r2   )Ú__copyright__Ú__license__Ú	__email__r0   r*   r   Ú
contextlibr   Ú	qgis.corer   r   ZwfsOutputExtension.definitionsr   r   r&   r'   r2   r   r   r   r   Ú<module>   s   

