
    h#                        S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJrJr  SSKJr  SS	KJr  SS
KJrJrJrJrJrJr  SSKJr  SSKJr  Sr\R@                  RC                  SS5      r" " S S\5      r# " S S5      r$g)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                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )r       z1Formatter for tasks, adding the task name and id.c                 H  > [        5       nU(       aJ  UR                  (       a9  UR                  R                  UR                  R                  UR
                  S9  O8UR                  R                  SS5        UR                  R                  SS5        [        TU ]!  U5      $ )N)task_id	task_namer   z???r   )	r   request__dict__updateidname
setdefaultsuperformat)selfrecordtask	__class__s      6D:\TimeStamps\venv\Lib\site-packages\celery/app/log.pyr"   TaskFormatter.format#   su    !DLLOO""4<<??-1YY # 8 OO&&{E:OO&&y%8w~f%%     )__name__
__module____qualname____firstlineno____doc__r"   __static_attributes____classcell__)r&   s   @r'   r   r       s    ;& &r)   r   c                       \ rS rSrSrSrS r  SS jrSS jr  SS jr	S	 r
  SS
 jr  SS jrSS jrSS jr\4S jrSS jrS rS rSS jr\S 5       r\R.                  S 5       rSrg)r   .   z$Application logging setup (app.log).Fc                 *   Xl         [        [        R                  5      U l        U R                   R
                  R                  U l        U R                   R
                  R                  U l	        U R                   R
                  R                  U l        g N)appr   loggingWARNloglevelconfworker_log_formatr"   worker_task_log_formattask_formatworker_log_colorcolorize)r#   r6   s     r'   __init__Logging.__init__6   sW    w||,hhmm5588==??66r)   Nc                    [        U5      nU R                  XXVS9nU(       d  U(       a  U R                  U5        [        R                  R                  U(       a  [        U5      OSU(       a  [        U5      OSS9  [        R                  " S[        S9  [        R                  " S[        S9  [        R                  " S5        U$ )N)r?   hostname )CELERY_LOG_LEVELCELERY_LOG_FILEalways)categoryT)r   setup_logging_subsystemredirect_stdoutsosenvironr   strwarningsfilterwarningsr   r   r7   captureWarnings)r#   r9   logfilerJ   redirect_levelr?   rC   handleds           r'   setupLogging.setup=   s    (#.. / 
 +!!.1


.6S]B,3CL 	 	
 	3FG3MN%r)   c                     U R                  [        U5      US9  [        R                  R	                  S[        U=(       d    S5      S9  g )N)r9   1rD   )CELERY_LOG_REDIRECTCELERY_LOG_REDIRECT_LEVEL)redirect_stdouts_to_loggerr   rK   rL   r   rM   )r#   r9   r   s      r'   rJ   Logging.redirect_stdoutsN   sG    ''tx 	( 	
 	

 #&)(.b&9 	 	
r)   c           	      V   U R                   (       a  g U(       a  U(       a  [        X%5      nS[        l        [	        U=(       d    U R
                  5      nU=(       d    U R                  nU R                  XB5      n[        5         [        R                  R                  S XX4S9nU(       d  [        R                  " 5       nU R                  R                  R                   (       a7  / Ul        / [%        S5      l        / [%        S5      l        / [%        S5      l        U R&                  " XXU40 UD6  U R&                  " [)        5       U[*        (       a  UO[        R,                  X440 UD6  [        R.                  R                  S UXX4S9  U R1                  XUS9   [        R                  " 5       R"                  S   R2                  n	[5        U	5        [;        U[<        5      (       a  UOS	n
[>        R@                  RC                  [=        U5      U
US
9  U$ ! [6        [8        4 a     NUf = f)NT)senderr9   rQ   r"   r?   celerycelery.taskcelery.redirectedr]   loggerr9   rQ   r"   r?   )r?   r   rD   )_MP_FORK_LOGLEVEL__MP_FORK_LOGFILE__MP_FORK_LOGFORMAT_)"already_setupr   r   _setupr   r9   r"   supports_colorr   r   setup_loggingsendr7   	getLoggerr6   r:   worker_hijack_root_loggerhandlersr   _configure_loggerr   r   ERRORafter_setup_loggersetup_task_loggersstreamr   AttributeError
IndexError
isinstancerM   rK   rL   r   )r#   r9   rQ   r"   r?   rC   kwargs	receiversrootrr   logfile_names              r'   rI   Logging.setup_logging_subsystemW   s   x!'4G(3dmm4&4;;&&x9$&))..( / 
	
 $$&Dxx}}66 "02
8$-57
=)2;=
./8 ""x=C
 ""*,VV %+ &&++D! ,  ##H#I	.&&(11!4;;F &f- #-Wc":":w


S],8.4 	 	6  
+ 		s   ,H H('H(c                 h    Ub/  U R                   " XUU40 UD6  U(       a  UR                  U5        g g g r5   )setup_handlerssetLevel)r#   rb   rQ   r9   r"   r?   rv   s          r'   rn   Logging._configure_logger   s>     (4,24)  r)   c           	      X   [        U=(       d    U R                  5      nU=(       d    U R                  nU R                  XB5      nU R                  " [        S5      X#U4S[        0UD6nUR                  U5        [        U5      Ul	        [        R                  R                  SUXX4S9  U$ )z|Setup the task logger.

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

Will return the base task logger object.
r_   	formatterNra   )r   r9   r=   rh   r|   r   r   r}   int	propagater   after_setup_task_loggerrj   )r#   r9   rQ   r"   r?   r   rv   rb   s           r'   rq   Logging.setup_task_loggers   s     (3dmm4+4++&&x9$$}%X
 $
 (.

 	!y>'',, 	- 	

 r)   c                 d    [        X5      nU(       a  U[        l        U(       a  U[        l        U$ )zRedirect :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#   rb   r9   r   r   proxys         r'   rZ   "Logging.redirect_stdouts_to_logger   s'     V.CJCJr)   c                     Uc  U R                   OUnU R                  R                  (       a  gU(       d  Uc$  US L =(       a    [        [        R
                  5      $ U$ )NF)r?   r6   
IS_WINDOWSr
   r   r   )r#   r?   rQ   s      r'   rh   Logging.supports_color   sI    $,$44==(88x' d?9vcjj'99r)   c                 2    [        U R                  X!5      S9$ )N)enabled)r   rh   )r#   rQ   r   s      r'   r   Logging.colored   s    t227DEEr)   c                     U R                  U5      (       a  U$ U R                  U5      nUR                  U" X4S95        UR                  U5        U$ )N)	use_color)_is_configured_detect_handlersetFormatter
addHandler)r#   rb   rQ   r"   r?   r   rv   handlers           r'   r|   Logging.setup_handlers   sN    v&&M&&w/YvBC'"r)   c                     Uc  [         R                  OUn[        US5      (       a  [        R                  " U5      $ [        USS9$ )z@Create handler from filename, an open stream or `None` (stderr).writezutf-8)encoding)r   
__stderr__hasattrr7   StreamHandlerr   )r#   rQ   s     r'   r   Logging._detect_handler   s<    $+O#..7G$$((11!'G<<r)   c                 L    [        S UR                  =(       d    /  5       5      $ )Nc              3   `   #    U  H$  n[        U[        R                  5      (       + v   M&     g 7fr5   )ru   r7   NullHandler).0hs     r'   	<genexpr>'Logging._has_handler.<locals>.<genexpr>   s*      
* 1g11222*s   ,.)anyrm   r#   rb   s     r'   _has_handlerLogging._has_handler   s(     
__**
 
 	
r)   c                 V    U R                  U5      =(       a    [        USS5      (       + $ )N_rudimentary_setupF)r   getattrr   s     r'   r   Logging._is_configured   s.      ( 1(%21 .1 	1r)   c                     [        U5      $ r5   )r   )r#   r   rv   s      r'   get_default_loggerLogging.get_default_logger   s    $r)   c                     U R                   $ r5   rg   )r#   s    r'   rf   Logging.already_setup   s    {{r)   c                     Xl         g r5   r   )r#   	was_setups     r'   rf   r      s    r)   )rg   r6   r?   r"   r9   r=   )NNFWARNINGNN)Nr`   )NNNNN)NNNNF)NTT)NNr5   )r^   )r+   r,   r-   r.   r/   rg   r@   rT   rJ   rI   rn   rq   rZ   rh   r   r   r|   r   r   r   r   r	   rf   setterr0   r*   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/   r7   rK   r   rN   logging.handlersr   kombu.utils.encodingr   r^   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__rL   getr   r   r   r*   r)   r'   <module>r      sn     	 
  / :  * M ' #< < . %
&	%	(&N &J  J r)   