
    h#                        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 ddl	m
Z
 ddlmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZmZ ddlmZ ddlmZ dZej@                  jC                  dd      Z" G d de      Z# G d d      Z$y)zLogging configuration.

The Celery instances logging section: ``Celery.log``.

Sets up logging for the worker and other programs,
redirects standard outs, colors log output, patches logging
related compatibility fixes, and so on.
    N)WatchedFileHandler)set_default_encoding_file)signals)get_current_task)CDeprecationWarningCPendingDeprecationWarning)class_property)isatty)ColorFormatterLoggingProxy
get_loggerget_multiprocessing_loggermlevelreset_multiprocessing_logger)node_format)colored)TaskFormatterLoggingMP_LOGFc                   "     e Zd ZdZ fdZ xZS )r   z1Formatter for tasks, adding the task name and id.c                 :   t               }|rH|j                  r<|j                  j                  |j                  j                  |j
                         n8|j                  j                  dd       |j                  j                  dd       t        | !  |      S )N)task_id	task_namer   z???r   )	r   request__dict__updateidname
setdefaultsuperformat)selfrecordtask	__class__s      J/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/app/log.pyr!   zTaskFormatter.format#   su    !DLLOO""4<<??-1YY # 8 OO&&{E:OO&&y%8w~f%%    )__name__
__module____qualname____doc__r!   __classcell__)r%   s   @r&   r   r       s    ;& &r'   r   c                       e Zd ZdZdZd Z	 	 ddZddZ	 	 ddZd Z		 	 dd	Z
	 	 dd
ZddZddZefdZddZd Zd ZddZed        Zej,                  d        Zy)r   z$Application logging setup (app.log).Fc                 ,   || _         t        t        j                        | _        | j                   j
                  j                  | _        | j                   j
                  j                  | _	        | j                   j
                  j                  | _        y N)appr   loggingWARNloglevelconfworker_log_formatr!   worker_task_log_formattask_formatworker_log_colorcolorize)r"   r0   s     r&   __init__zLogging.__init__6   sY    w||,hhmm5588==??66r'   Nc                 |   t        |      }| j                  ||||      }|s|r| j                  |       t        j                  j                  |rt        |      nd|rt        |      nd       t        j                  dt               t        j                  dt               t        j                  d       |S )N)r9   hostname )CELERY_LOG_LEVELCELERY_LOG_FILEalways)categoryT)r   setup_logging_subsystemredirect_stdoutsosenvironr   strwarningsfilterwarningsr   r   r1   captureWarnings)r"   r3   logfilerC   redirect_levelr9   r<   handleds           r&   setupzLogging.setup=   s    (#..g8 / 
 +!!.1


.6S]B,3CL 	 	
 	3FG3MN%r'   c                     | j                  t        |      |       t        j                  j	                  dt        |xs d             y )N)r3   1r=   )CELERY_LOG_REDIRECTCELERY_LOG_REDIRECT_LEVEL)redirect_stdouts_to_loggerr   rD   rE   r   rF   )r"   r3   r   s      r&   rC   zLogging.redirect_stdoutsN   sG    ''tx 	( 	
 	

 #&)(.b&9 	 	
r'   c                 "   | j                   ry |r|rt        ||      }dt        _        t	        |xs | j
                        }|xs | j                  }| j                  ||      }t                t        j                  j                  d ||||      }|st        j                         }| j                  j                  j                   r7g |_        g t%        d      _        g t%        d      _        g t%        d      _         | j&                  |||||fi |  | j&                  t)               |t*        r|nt        j,                  ||fi | t        j.                  j                  d |||||       | j1                  |||       	 t        j                         j"                  d   j2                  }	t5        |	       t;        |t<              r|nd	}
t>        j@                  jC                  t=        |      |
|
       |S # t6        t8        f$ r Y Rw xY w)NT)senderr3   rJ   r!   r9   celerycelery.taskcelery.redirectedrT   loggerr3   rJ   r!   r9   )r9   r   r=   )_MP_FORK_LOGLEVEL__MP_FORK_LOGFILE__MP_FORK_LOGFORMAT_)"already_setupr   r   _setupr   r3   r!   supports_colorr   r   setup_loggingsendr1   	getLoggerr0   r4   worker_hijack_root_loggerhandlersr   _configure_loggerr   r   ERRORafter_setup_loggersetup_task_loggersstreamr   AttributeError
IndexError
isinstancerF   rD   rE   r   )r"   r3   rJ   r!   r9   r<   kwargs	receiversrootri   logfile_names              r&   rB   zLogging.setup_logging_subsystemW   s   x!'84G(3dmm4&4;;&&x9$&))..(GH / 
	
 $$&Dxx}}66 "02
8$-57
=)2;=
./8 #D""gx=C
 #D""*,V %+ &&++D!7 ,  ##Hg#I	.&&(11!4;;F &f- #-Wc":w


S],8.4 	 	6  
+ 		s   +G< <HHc                 ^    |+ | j                   ||||fi | |r|j                  |       y y y r/   )setup_handlerssetLevel)r"   rY   rJ   r3   r!   r9   rm   s          r&   re   zLogging._configure_logger   sB    D (4,24)  r'   c                 R   t        |xs | j                        }|xs | j                  }| j                  ||      } | j                  t        d      |||fdt        i|}|j                  |       t        |      |_	        t        j                  j                  d|||||       |S )zSetup the task logger.

        If `logfile` is not specified, then `sys.stderr` is used.

        Will return the base task logger object.
        rV   	formatterNrX   )r   r3   r7   r_   rr   r   r   rs   int	propagater   after_setup_task_loggerra   )r"   r3   rJ   r!   r9   rw   rm   rY   s           r&   rh   zLogging.setup_task_loggers   s     (3dmm4+4++&&x9$$$}%VX
 $
 (.

 	!y>'',,wH 	- 	

 r'   c                 R    t        ||      }|r|t        _        |r|t        _        |S )a  Redirect :class:`sys.stdout` and :class:`sys.stderr` to logger.

        Arguments:
            logger (logging.Logger): Logger instance to redirect to.
            loglevel (int, str): The loglevel redirected message
                will be logged as.
        )r   sysstdoutstderr)r"   rY   r3   r{   r|   proxys         r&   rR   z"Logging.redirect_stdouts_to_logger   s)     VX.CJCJr'   c                     || j                   n|}| j                  j                  ry|s||d u xr t        t        j
                        S |S )NF)r9   r0   
IS_WINDOWSr
   rz   r|   )r"   r9   rJ   s      r&   r_   zLogging.supports_color   sI    $,$44==(88x' d?9vcjj'99r'   c                 :    t        | j                  ||            S )N)enabled)r   r_   )r"   rJ   r   s      r&   r   zLogging.colored   s    t227GDEEr'   c                     | j                  |      r|S | j                  |      }|j                   |||             |j                  |       |S )N)	use_color)_is_configured_detect_handlersetFormatter
addHandler)r"   rY   rJ   r!   r9   ru   rm   handlers           r&   rr   zLogging.setup_handlers   sM    v&M&&w/YvBC'"r'   c                     |t         j                  n|}t        |d      rt        j                  |      S t        |d      S )z@Create handler from filename, an open stream or `None` (stderr).writezutf-8)encoding)rz   
__stderr__hasattrr1   StreamHandlerr   )r"   rJ   s     r&   r   zLogging._detect_handler   s9    $+O#..7G$((11!'G<<r'   c                 B    t        d |j                  xs g D              S )Nc              3   R   K   | ]  }t        |t        j                          ! y wr/   )rl   r1   NullHandler).0hs     r&   	<genexpr>z'Logging._has_handler.<locals>.<genexpr>   s(      
 1g1122
s   %')anyrd   r"   rY   s     r&   _has_handlerzLogging._has_handler   s%     
__*
 
 	
r'   c                 D    | j                  |      xr t        |dd       S )N_rudimentary_setupF)r   getattrr   s     r&   r   zLogging._is_configured   s.      ( 1(%21 .1 	1r'   c                     t        |      S r/   )r   )r"   r   rm   s      r&   get_default_loggerzLogging.get_default_logger   s    $r'   c                     | j                   S r/   r^   )r"   s    r&   r]   zLogging.already_setup   s    {{r'   c                     || _         y r/   r   )r"   	was_setups     r&   r]   zLogging.already_setup   s	    r'   )NNFWARNINGNN)NrW   )NNNNN)NNNNF)NTT)NNr/   )rU   )r(   r)   r*   r+   r^   r:   rM   rC   rB   re   rh   rR   r_   r   r   rr   r   r   r   r   r	   r]   setter r'   r&   r   r   .   s    .
 F7 CH@D"
 KO8<;z* FJ496 ;?7; 	F "0=
1       r'   r   )%r+   r1   rD   rz   rG   logging.handlersr   kombu.utils.encodingr   rU   r   celery._stater   celery.exceptionsr   r   celery.localr	   celery.platformsr
   celery.utils.logr   r   r   r   r   r   celery.utils.nodenamesr   celery.utils.termr   __all__rE   getr   r   r   r   r'   r&   <module>r      sn     	 
  / :  * M ' #< < . %
&	%	(&N &J  J r'   