
    tni                     R    d Z ddlZddlZddlmZ dZg dZd Z G d d          ZdS )	a  
PodWorker | modules | logging.py

Log Levels (Level - Value - Description)

NOTSET - 0 - No logging is configured, the logging system is effectively disabled.
DEBUG - 1 - Detailed information, typically of interest only when diagnosing problems. (Default)
INFO - 2 - Confirmation that things are working as expected.
WARN - 3 - An indication that something unexpected happened.
ERROR - 4 - Serious problem, the software has not been able to perform some function.
    N)Optionali   )NOTSETTRACEDEBUGINFOWARNERRORc                 V   t          | t                    r1|                                 } | t          vrt	          d|            | S t          | t
                    r=| dk     s| t          t                    k    rt	          d|            t          |          S t	          d|            )zB
    Checks the debug level and returns the debug level name.
    zInvalid debug level: r   )
isinstancestrupper
LOG_LEVELS
ValueErrorintlen)	log_levels    `/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/runpod/serverless/modules/rp_logger.py_validate_log_levelr      s     )S!! OO%%	J&&@Y@@AAA)S!! %q==IZ88@Y@@AAA)$$
8Y88
9
99    c            	       2   e Zd ZdZdZ eej                            dej                            dd                              Z	d Z
d Zdd	Zd
 Zddee         fdZddee         fdZddee         fdZddee         fdZd Zddee         fdZdS )RunPodLoggerzSingleton class for logging.NRUNPOD_LOG_LEVELRUNPOD_DEBUG_LEVELr   c                 z    t           j        $t                              |           t           _        t           j        S N)r   _RunPodLogger__instanceobject__new__)clss    r   r   zRunPodLogger.__new__4   s(    "*&,nnS&9&9L#&&r   c                 h    t          |          | _        |                     d| j                    dS )zn
        Set the debug level for logging.
        Can be set to the name or value of the debug level.
        zLog level set to N)r   levelinfo)self	new_levels     r   	set_levelzRunPodLogger.set_level9   s6    
 )33
		2dj2233333r   r   c                 p   | j         dk    rdS t                              | j                   }|t                              |          k    r|dk    rdS t          |          }t	          |          t
          k    r@t
          dz  }t	          |          t
          z
  }d| d}|d|         |z   || d         z   }t          j                            d          r+|||d}t          t          j        |          d	
           dS |r| d| }t          |                    d           d| d	
           dS )z@
        Log message to stdout if RUNPOD_DEBUG is true.
        r   NTIP   z
...TRUNCATED z CHARACTERS...
RUNPOD_ENDPOINT_ID)	requestIdmessager!   T)flushz |    z| )r!   r   indexr   r   MAX_MESSAGE_LENGTHosenvirongetprintjsondumpsljust)	r#   r+   message_leveljob_idlevel_indexhalf_max_lengthtruncated_amounttruncation_notelog_jsons	            r   logzRunPodLogger.logA   sa    :!!F &&tz22))-8888]e=S=SFg,,w<<,,,0A5O"7||.@@R0@RRRO(()O;gFVFWFW>XX  :>>.// 	%+-XXH$*X&&d3333F 	.--G--G$$Q''44744DAAAAr   c                     t          |          }|d         dt          |          dz
  z  z   |d         z   }|                     | d|            dS )zv
        Censors secrets for logging.
        Replaces everything except the first and last characters with *
        r   *r(   z: N)r   r   r"   )r#   secret_namesecretredacted_secrets       r   rC   zRunPodLogger.secreta   s[    
 V )cS[[1_&==r
J		[55O5566666r   
request_idc                 4    |                      |d|           dS )z
        debug log
        r   Nr>   r#   r+   rE   s      r   debugzRunPodLogger.debugj         	':.....r   c                 4    |                      |d|           dS )z
        info log
        r   NrG   rH   s      r   r"   zRunPodLogger.infop         	&*-----r   c                 4    |                      |d|           dS )z
        warn log
        r   NrG   rH   s      r   warnzRunPodLogger.warnv   rL   r   c                 4    |                      |d|           dS )z
        error log
        r	   NrG   rH   s      r   errorzRunPodLogger.error|   rJ   r   c                 2    |                      |d           dS )z
        tip log
        r'   NrG   )r#   r+   s     r   tipzRunPodLogger.tip   s     	%     r   c                 4    |                      |d|           dS )z4
        trace log (buffered until flushed)
        r   NrG   rH   s      r   tracezRunPodLogger.trace   rJ   r   )r   Nr   )__name__
__module____qualname____doc__r   r   r0   r1   r2   r!   r   r%   r>   rC   r   r   rI   r"   rN   rP   rR   rT    r   r   r   r   *   s_       &&J


/CW M M	
 	
 E' ' '
4 4 4   @7 7 7/ /# / / / /. . . . . .. . . . . ./ /# / / / /! ! !/ /# / / / / / /r   r   )	rX   r4   r0   typingr   r/   r   r   r   rY   r   r   <module>r[      s   
 
  				       BBB
: : :*b/ b/ b/ b/ b/ b/ b/ b/ b/ b/r   