
    `fk#                        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mZmZmZmZmZ dd
lmZ ddlmZ dZej                            dd          Z  G d de          Z! G d d          Z"dS )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)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                 8   t                      }|r3|j        r,|j                            |j        j        |j                   n6|j                            dd           |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      @/var/www/html/env/lib/python3.11/site-packages/celery/app/log.pyr    zTaskFormatter.format"   s    !! 	9DL 	9O""4<?-1Y # 8 8 8 8 O&&{E:::O&&y%888ww~~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dS ) r   z$Application logging setup (app.log).Fc                     || _         t          t          j                  | _        | j         j        j        | _        | j         j        j        | _	        | j         j        j
        | _        d S N)appr   loggingWARNloglevelconfworker_log_formatr    worker_task_log_formattask_formatworker_log_colorcolorize)r!   r/   s     r%   __init__zLogging.__init__5   sI    w|,,hm58=?6r&   NWARNINGc                    t          |          }|                     ||||          }|s|r|                     |           t          j                            |rt          |          nd|rt          |          nd           t          j        dt                     t          j        dt                     t          j        d           |S )N)r8   hostname )CELERY_LOG_LEVELCELERY_LOG_FILEalways)categoryT)r   setup_logging_subsystemredirect_stdoutsosenvironr   strwarningsfilterwarningsr   r   r0   captureWarnings)r!   r2   logfilerC   redirect_levelr8   r<   handleds           r%   setupzLogging.setup<   s    (##..g8 / 
 
  	2+ 	2!!.111

.6>S]]]B,3;CLLL 	 	
 	
 	
 	3FGGGG3MNNNN%%%r&   celery.redirectedc                     |                      t          |          |           t          j                            dt          |pd                     d S )N)r2   1r=   )CELERY_LOG_REDIRECTCELERY_LOG_REDIRECT_LEVEL)redirect_stdouts_to_loggerr   rD   rE   r   rF   )r!   r2   r   s      r%   rC   zLogging.redirect_stdoutsM   si    ''tx 	( 	
 	
 	
 	
 #&)(.b&9&9 	 	
 	
 	
 	
 	
r&   c                    | j         rd S |r|rt          ||          }dt          _        t	          |p| j                  }|p| j        }|                     ||          }t                       t          j
                            d ||||          }|st          j                    }| j        j        j        rCg |_        g t%          d          _        g t%          d          _        g t%          d          _         | j        |||||fi |  | j        t)                      |t*          r|nt          j        ||fi | t          j                            d |||||           |                     |||           	 t          j                    j        d         j        }	t5          |	           n# t6          t8          f$ r Y nw xY wt;          |t<                    r|nd	}
t>          j         !                    t=          |          |
|
           |S )NT)senderr2   rJ   r    r8   celerycelery.taskrN   rU   loggerr2   rJ   r    r8   )r8   r   r=   )_MP_FORK_LOGLEVEL__MP_FORK_LOGFILE__MP_FORK_LOGFORMAT_)"already_setupr   r   _setupr   r2   r    supports_colorr   r   setup_loggingsendr0   	getLoggerr/   r3   worker_hijack_root_loggerhandlersr   _configure_loggerr   r   ERRORafter_setup_loggersetup_task_loggersstreamr   AttributeError
IndexError
isinstancerF   rD   rE   r   )r!   r2   rJ   r    r8   r<   kwargs	receiversrootri   logfile_names              r%   rB   zLogging.setup_logging_subsystemV   sm    	F 	5x 	5!'844G(3dm44&4;&&x99$&&&)..(GH / 
 
	
  	J$&&Dx}6 > "02
8$$-57
=))2;=
.//8 #D"gx =C  
 #D"*,,V>  %+   &++D!7 ,    ##Hg#III	.&((1!4;F &f---- 
+ 	 	 	D	 #-Wc":":Bww

S]],8.4 	 	6 	6 	6 s   ;#F. .GGc                 b    |* | j         ||||fi | |r|                    |           d S d S d S r.   )setup_handlerssetLevel)r!   rY   rJ   r2   r    r8   rm   s          r%   re   zLogging._configure_logger   sg    D (4 4,24 4 4 *)))))	 * *r&   c                 V   t          |p| j                  }|p| j        }|                     ||          } | j        t          d          |||fdt          i|}|                    |           t          |          |_	        t          j                            d|||||           |S )zSetup the task logger.

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

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

 r&   Tc                 ^    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   r2   r{   r|   proxys         r%   rS   z"Logging.redirect_stdouts_to_logger   s6     VX.. 	CJ 	CJr&   c                     || j         n|}| j        j        rdS |s|"|d u ot          j                                        S |S )NF)r8   r/   
IS_WINDOWSrz   r|   isatty)r!   r8   rJ   s      r%   r_   zLogging.supports_color   sU    $,$44==(8 	5 	;x' d?:sz'8'8':'::r&   c                 J    t          |                     ||                    S )N)enabled)r   r_   )r!   rJ   r   s      r%   r   zLogging.colored   s#    t227GDDEEEEr&   c                     |                      |          r|S |                     |          }|                     |||                     |                    |           |S )N)	use_color)_is_configured_detect_handlersetFormatter
addHandler)r!   rY   rJ   r    r8   ru   rm   handlers           r%   rr   zLogging.setup_handlers   sl    v&& 	M&&w//YYvBBBCC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).Nwritezutf-8)encoding)rz   
__stderr__hasattrr0   StreamHandlerr   )r!   rJ   s     r%   r   zLogging._detect_handler   sG    $+O#..7G$$ 	2(111!'G<<<<r&   c                 B    t          d |j        pg D                       S )Nc              3   L   K   | ]}t          |t          j                   V   d S r.   )rl   r0   NullHandler).0hs     r%   	<genexpr>z'Logging._has_handler.<locals>.<genexpr>   sF       
 
 1g1222
 
 
 
 
 
r&   )anyrd   r!   rY   s     r%   _has_handlerzLogging._has_handler   s7     
 
_*
 
 
 
 
 	
r&   c                 P    |                      |          ot          |dd           S )N_rudimentary_setupF)r   getattrr   s     r%   r   zLogging._is_configured   s6      (( 1(%21 21 .1 	1r&   rV   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                     || _         d S r.   r   )r!   	was_setups     r%   r]   zLogging.already_setup   s    r&   )NNFr:   NN)NrN   )NNNNN)NNNNF)NTT)NNr.   )rV   )r'   r(   r)   r*   r^   r9   rM   rC   rB   re   rh   rS   r_   r   r
   rr   r   r   r   r   r	   r]   setter r&   r%   r   r   -   s       ..
 F7 7 7 CH@D   "
 
 
 
 KO8<; ; ; ;z* * * FJ49   6 ;?7;    	 	 	 	F F F F "0   = = = =
 
 
1 1 1          ^          r&   r   )#r*   r0   rD   rz   rG   logging.handlersr   kombu.utils.encodingr   rV   r   celery._stater   celery.exceptionsr   r   celery.localr	   celery.utils.logr
   r   r   r   r   r   celery.utils.nodenamesr   celery.utils.termr   __all__rE   getr   r   r   r   r&   r%   <module>r      s     				 



  / / / / / / : : : : : :       * * * * * * M M M M M M M M ' ' ' ' ' '< < < < < < < < < < < < < < < < . . . . . . % % % % % %
&	%	(	(& & & & &N & & &J  J  J  J  J  J  J  J  J  J r&   