
    sh
                         d Z dZdZddl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 dZd	Z G d
 d      Zd Zed        Zd Zd Zd Zy)zCopyright 2021, 3LizzGPL version 3zinfo@3liz.org    N)contextmanager)QgisQgsMessageLog)to_boolLizmapFc                   d    e Zd Zedefd       Zedefd       Zedefd       Zedefd       Z	y)Loggermessagec                 |    t        j                  t        |       t        t        j
                  j                         y N)r   
logMessagestrPLUGINr   MessageLevelInfor
   s    4/var/www/qgis-server/plugins/lizmap_server/logger.pyinfozLogger.info   s$      Wvt7H7H7M7MN    c                 |    t        j                  t        |       t        t        j
                  j                         y r   )r   r   r   r   r   r   Warningr   s    r   warningzLogger.warning   s$      Wvt7H7H7P7PQr   c                 |    t        j                  t        |       t        t        j
                  j                         y r   )r   r   r   r   r   r   Criticalr   s    r   criticalzLogger.critical   s$      Wvt7H7H7Q7QRr   ec                 t    t         j                  dj                  | t        j                                      y)z Log a Python exception. z#Critical exception:
{e}
{traceback})r   	tracebackN)r	   r   formatr   
format_excr   s    r   log_exceptionzLogger.log_exception#   s2     	3::#..0 ; 	
r   N)
__name__
__module____qualname__staticmethodr   r   r   r   BaseExceptionr"    r   r   r	   r	      su    Oc O O R R R S# S S 
 
 
r   r	   c                       fd}|S )z$ Decorator to catch all exceptions. c                      	  | i | y # t         $ rS}t        t        j                  d            rt        j                  |        t        j                  |       Y d }~y d }~ww xY w)NCI	Exceptionr   osgetenvr	   r"   )argskwargsr   funcs      r   inner_functionz)exception_handler.<locals>.inner_function0   sW    	$$!&! 	$ryy'$$Q'  ##		$s    	A(A	A##A(r(   )r2   r3   s   ` r   exception_handlerr4   .   s    $ r   c               #      K   	 d y# t         $ rS} t        t        j                  d            rt        j                  |         t        j                  |        Y d} ~ yd} ~ ww xY ww)z3 Define a trap context for catching all exceptions Nr+   r,   r!   s    r   trapr6   ;   sO        299T?#  #Q	 s+   A(	 A(	A%A	A A( A%%A(c                 B     t        j                          fd       }|S )z Decorator to log function. c                  V    t         j                  j                          | i |}|S r   )r	   r   r#   )r0   r1   valuer2   s      r   log_function_corez'log_function.<locals>.log_function_coreI   s'    DMM"d%f%r   	functoolswraps)r2   r:   s   ` r   log_functionr>   G   s&    __T 
 r   c                 B     t        j                          fd       }|S )z# Decorator to make some profiling. c                      t        j                          } | i |}t        j                          }t        j                  j                   dt	        ||z
  d       d       |S )Nz ran in    s)timer	   r   r#   round)r0   r1   startresultendr2   s        r   wrapperzprofiling.<locals>.wrapperU   sV    		t&v&iikt}}oXeC%K.C-DAFGr   r;   r2   rH   s   ` r   	profilingrJ   R   s'     __T  Nr   c                 B     t        j                          fd       }|S )z. Decorator to log the output of the function. c                       | i |}t         r)t        j                  j                   d| d|        |S t        j                  j                   d|dd  d|        |S )Nz output is z for parameter r      u   … for parameter )DEBUGr	   r   r#   )r0   r1   rF   r2   s      r   rH   z!log_output_value.<locals>.wrapperc   sn    t&v&KK4==/VHOD8TU  KK4==/VAc]OCUVZU]^_r   r;   rI   s   ` r   log_output_valuerO   `   s'     __T  Nr   )__copyright____license__	__email__r<   r.   rC   r   
contextlibr   	qgis.corer   r   lizmap_server.toolsr   r   rN   r	   r4   r6   r>   rJ   rO   r(   r   r   <module>rV      se   &	  	   % ) '	
 
2
    r   