a
    xd#                     @   s   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 !ddZ"G dd deZ#G d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)isatty)ColorFormatterLoggingProxy
get_loggerget_multiprocessing_loggermlevelreset_multiprocessing_logger)node_format)colored)TaskFormatterLoggingMP_LOGFc                   @   s   e Zd ZdZdd ZdS )r   z1Formatter for tasks, adding the task name and id.c                 C   sP   t  }|r(|jr(|jj|jj|jd n|jdd |jdd t| |S )N)task_id	task_namer   z???r   )	r   request__dict__updateidname
setdefaultr
   format)selfrecordZtask r    F/var/www/html/Ranjet/env/lib/python3.9/site-packages/celery/app/log.pyr   $   s    
zTaskFormatter.formatN)__name__
__module____qualname____doc__r   r    r    r    r!   r   !   s   r   c                   @   s   e Zd ZdZdZdd Zd'ddZd(d
dZd)ddZdd Z	d*ddZ
d+ddZd,ddZd-ddZefddZd.ddZdd Zdd  Zd/d"d#Zed$d% Zejd&d% ZdS )0r   z$Application logging setup (app.log).Fc                 C   s:   || _ ttj| _| j jj| _| j jj| _	| j jj
| _d S N)appr   loggingWARNloglevelconfZworker_log_formatr   Zworker_task_log_formattask_formatZworker_log_colorcolorize)r   r'   r    r    r!   __init__7   s
    zLogging.__init__NWARNINGc                 C   s~   t |}| j||||d}|s,|r,| | tjj|r>t|nd|rLt|ndd tjdt	d tjdt
d td |S )N)r-   hostname )ZCELERY_LOG_LEVELZCELERY_LOG_FILEalways)categoryT)r   setup_logging_subsystemredirect_stdoutsosenvironr   strwarningsfilterwarningsr   r   r(   captureWarnings)r   r*   logfiler5   Zredirect_levelr-   r0   Zhandledr    r    r!   setup>   s    

zLogging.setupcelery.redirectedc                 C   s.   | j t||d tjjdt|p"dd d S )N)r*   1r1   )ZCELERY_LOG_REDIRECTZCELERY_LOG_REDIRECT_LEVEL)redirect_stdouts_to_loggerr   r6   r7   r   r8   )r   r*   r   r    r    r!   r5   P   s    
zLogging.redirect_stdoutsc              	   K   sj  | j r
d S |r|rt||}dt_t|p,| j}|p8| j}| ||}t  t	j
jd ||||d}|st }| jjjrg |_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 |||||d | j|||d zt jd j}	W n ttfy2   Y n
0 t|	 t|trL|nd	}
tj j!t||
|d
 |S )NT)senderr*   r<   r   r-   celerycelery.taskr>   rA   loggerr*   r<   r   r-   )r-   r   r1   )Z_MP_FORK_LOGLEVEL_Z_MP_FORK_LOGFILE_Z_MP_FORK_LOGFORMAT_)"already_setupr   r   _setupr   r*   r   supports_colorr   r   setup_loggingsendr(   	getLoggerr'   r+   Zworker_hijack_root_loggerhandlersr   _configure_loggerr   r   ERRORZafter_setup_loggersetup_task_loggersstreamAttributeError
IndexErrorr   
isinstancer8   r6   r7   r   )r   r*   r<   r   r-   r0   kwargsZ	receiversrootrP   Zlogfile_namer    r    r!   r4   Y   sb    






zLogging.setup_logging_subsystemc                 K   s2   |d ur.| j ||||fi | |r.|| d S r&   )setup_handlerssetLevel)r   rE   r<   r*   r   r-   rT   r    r    r!   rM      s    
zLogging._configure_loggerc                 K   st   t |p
| j}|p| j}| ||}| jtd|||fdti|}|| t||_	t
jjd|||||d |S )zSetup the task logger.

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

        Will return the base task logger object.
        rC   	formatterNrD   )r   r*   r,   rH   rV   r   r   rW   int	propagater   Zafter_setup_task_loggerrJ   )r   r*   r<   r   r-   rZ   rT   rE   r    r    r!   rO      s&    


zLogging.setup_task_loggersTc                 C   s"   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   rE   r*   r\   r]   proxyr    r    r!   r@      s    	
z"Logging.redirect_stdouts_to_loggerc                 C   s@   |d u r| j n|}| jjrdS |s*|d u r<|d u o:ttjS |S )NF)r-   r'   Z
IS_WINDOWSr	   r[   r]   )r   r-   r<   r    r    r!   rH      s    zLogging.supports_colorc                 C   s   t | ||dS )N)enabled)r   rH   )r   r<   r_   r    r    r!   r      s    zLogging.coloredc                 K   s8   |  |r|S | |}||||d || |S )N)Z	use_color)_is_configured_detect_handlersetFormatter
addHandler)r   rE   r<   r   r-   rX   rT   handlerr    r    r!   rV      s    


zLogging.setup_handlersc                 C   s2   |du rt jn|}t|dr&t|S t|ddS )z@Create handler from filename, an open stream or `None` (stderr).Nwritezutf-8)encoding)r[   
__stderr__hasattrr(   StreamHandlerr   )r   r<   r    r    r!   ra      s    

zLogging._detect_handlerc                 C   s   t dd |jpg D S )Nc                 s   s   | ]}t |tj V  qd S r&   )rS   r(   NullHandler).0hr    r    r!   	<genexpr>   s   z'Logging._has_handler.<locals>.<genexpr>)anyrL   r   rE   r    r    r!   _has_handler   s    zLogging._has_handlerc                 C   s   |  |ot|dd S )NZ_rudimentary_setupF)rp   getattrro   r    r    r!   r`      s    zLogging._is_configuredrB   c                 K   s   t |S r&   )r   )r   r   rT   r    r    r!   get_default_logger   s    zLogging.get_default_loggerc                 C   s   | j S r&   rG   )r   r    r    r!   rF      s    zLogging.already_setupc                 C   s
   || _ d S r&   rs   )r   Z	was_setupr    r    r!   rF      s    )NNFr/   NN)Nr>   )NNNNN)NNNNF)NTT)NN)NN)N)rB   )r"   r#   r$   r%   rG   r.   r=   r5   r4   rM   rO   r@   rH   r   r
   rV   ra   rp   r`   rr   r   rF   setterr    r    r    r!   r   /   s:     

	  
=  
  



	


r   )%r%   r(   r6   r[   r9   logging.handlersr   Zkombu.utils.encodingr   rB   r   Zcelery._stater   Zcelery.exceptionsr   r   Zcelery.localr   Zcelery.platformsr	   Zcelery.utils.logr
   r   r   r   r   r   Zcelery.utils.nodenamesr   Zcelery.utils.termr   __all__r7   getr   r   r   r    r    r    r!   <module>   s$    