o
    h#                     @   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 fddZ  ZS )r   z1Formatter for tasks, adding the task name and id.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
setdefaultsuperformat)selfrecordtask	__class__ P/var/www/html/optinet_system/venv/lib/python3.10/site-packages/celery/app/log.pyr   #   s   
zTaskFormatter.format)__name__
__module____qualname____doc__r   __classcell__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 )/r   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confworker_log_formatr   worker_task_log_formattask_formatworker_log_colorcolorize)r   r,   r$   r$   r%   __init__6   s
   zLogging.__init__NWARNINGc                 C   s~   t |}| j||||d}|s|r| | tjj|rt|nd|r&t|ndd tjdt	d tjdt
d td |S )N)r5   hostname )CELERY_LOG_LEVELCELERY_LOG_FILEalways)categoryT)r   setup_logging_subsystemredirect_stdoutsosenvironr   strwarningsfilterwarningsr   r   r-   captureWarnings)r   r/   logfiler?   redirect_levelr5   r8   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/   1r9   )CELERY_LOG_REDIRECTCELERY_LOG_REDIRECT_LEVEL)redirect_stdouts_to_loggerr   r@   rA   r   rB   )r   r/   r   r$   r$   r%   r?   N   s   

zLogging.redirect_stdoutsc              	   K   sd  | j rd S |r|rt||}dt_t|p| j}|p| j}| ||}t  t	j
jd ||||d}|st }| jjjrNg |_g td_g td_g td_| j|||||fi | | jt |trd|ntj||fi | t	jjd |||||d | j|||d z
t jd j}	W n ttfy   Y nw t|	 t|tr|nd	}
tj j!t||
|d
 |S )NT)senderr/   rF   r   r5   celerycelery.taskrJ   rO   loggerr/   rF   r   r5   )r5   r   r9   )_MP_FORK_LOGLEVEL__MP_FORK_LOGFILE__MP_FORK_LOGFORMAT_)"already_setupr   r   _setupr   r/   r   supports_colorr   r   setup_loggingsendr-   	getLoggerr,   r0   worker_hijack_root_loggerhandlersr   _configure_loggerr   r   ERRORafter_setup_loggersetup_task_loggersstreamAttributeError
IndexErrorr   
isinstancerB   r@   rA   r   )r   r/   rF   r   r5   r8   kwargs	receiversrootrc   logfile_namer$   r$   r%   r>   W   sd   






zLogging.setup_logging_subsystemc                 K   s:   |d ur| j ||||fi | |r|| d S d S d S r+   )setup_handlerssetLevel)r   rS   rF   r/   r   r5   rg   r$   r$   r%   r_      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.
        rQ   	formatterNrR   )r   r/   r3   rY   rk   r   r   rl   int	propagater   after_setup_task_loggerr[   )r   r/   rF   r   r5   ro   rg   rS   r$   r$   r%   rb      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   rS   r/   rr   rs   proxyr$   r$   r%   rN      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)r5   r,   
IS_WINDOWSr	   rq   rs   )r   r5   rF   r$   r$   r%   rY      s   zLogging.supports_colorc                 C   s   t | ||dS )N)enabled)r   rY   )r   rF   rv   r$   r$   r%   r      s   zLogging.coloredc                 K   s8   |  |r|S | |}||||d || |S )N)	use_color)_is_configured_detect_handlersetFormatter
addHandler)r   rS   rF   r   r5   rm   rg   handlerr$   r$   r%   rk      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)rq   
__stderr__hasattrr-   StreamHandlerr   )r   rF   r$   r$   r%   ry      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+   )rf   r-   NullHandler).0hr$   r$   r%   	<genexpr>   s
    
z'Logging._has_handler.<locals>.<genexpr>)anyr^   r   rS   r$   r$   r%   _has_handler   s   zLogging._has_handlerc                 C   s   |  |ot|dd S )N_rudimentary_setupF)r   getattrr   r$   r$   r%   rx      s   zLogging._is_configuredrP   c                 K   s   t |S r+   )r   )r   r   rg   r$   r$   r%   get_default_logger   s   zLogging.get_default_loggerc                 C   s   | j S r+   rX   )r   r$   r$   r%   rW      s   zLogging.already_setupc                 C   s
   || _ d S r+   r   )r   	was_setupr$   r$   r%   rW      s   
)NNFr7   NN)NrJ   )NNNNN)NNNNF)NTT)NNr+   )rP   )r&   r'   r(   r)   rX   r6   rI   r?   r>   r_   rb   rN   rY   r   r
   rk   ry   r   rx   r   r   rW   setterr$   r$   r$   r%   r   .   s<    

	
=





	

r   )%r)   r-   r@   rq   rC   logging.handlersr   kombu.utils.encodingr   rP   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__rA   getr   r   r   r$   r$   r$   r%   <module>   s&     