
    >ik#                        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<                  j?                  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)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/html/wine-match-dev/backend/winematch-backend/venv/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!   r/   s     r%   __init__zLogging.__init__5   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)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   logfilerB   redirect_levelr8   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)r2   1r<   )CELERY_LOG_REDIRECTCELERY_LOG_REDIRECT_LEVEL)redirect_stdouts_to_loggerr   rC   rD   r   rE   )r!   r2   r   s      r%   rB   zLogging.redirect_stdoutsM   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)senderr2   rI   r    r8   celerycelery.taskcelery.redirectedrS   loggerr2   rI   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
isinstancerE   rC   rD   r   )r!   r2   rI   r    r8   r;   kwargs	receiversrootrh   logfile_names              r%   rA   zLogging.setup_logging_subsystemV   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!   rX   rI   r2   r    r8   rl   s          r%   rd   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.
        rU   	formatterNrW   )r   r2   r6   r^   rq   r   r   rr   int	propagater   after_setup_task_loggerr`   )r!   r2   rI   r    r8   rv   rl   rX   s           r%   rg   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!   rX   r2   rz   r{   proxys         r%   rQ   z"Logging.redirect_stdouts_to_logger   s)     VX.CJCJr&   c                     || j                   n|}| j                  j                  ry|s|$|d u xr t        j                  j                         S |S )NF)r8   r/   
IS_WINDOWSry   r{   isatty)r!   r8   rI   s      r%   r^   zLogging.supports_color   sM    $,$44==(88x' d?:szz'8'8'::r&   c                 :    t        | j                  ||            S )N)enabled)r   r^   )r!   rI   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!   rX   rI   r    r8   rt   rl   handlers           r%   rq   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)ry   
__stderr__hasattrr0   StreamHandlerr   )r!   rI   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.   )rk   r0   NullHandler).0hs     r%   	<genexpr>z'Logging._has_handler.<locals>.<genexpr>   s(      
 1g1122
s   %')anyrc   r!   rX   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   rl   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)NrV   )NNNNN)NNNNF)NTT)NNr.   )rT   )r'   r(   r)   r*   r]   r9   rL   rB   rA   rd   rg   rQ   r^   r   r
   rq   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*   r0   rC   ry   rF   logging.handlersr   kombu.utils.encodingr   rT   r   celery._stater   celery.exceptionsr   r   celery.localr	   celery.utils.logr
   r   r   r   r   r   celery.utils.nodenamesr   celery.utils.termr   __all__rD   getr   r   r   r   r&   r%   <module>r      sk     	 
  / :  * M '< < . %
&	%	(&N &J  J r&   