ó
P'—^c           @@  sK  d  Z  d d l m 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 d d	 l m Z m Z d d
 l m Z m Z d d l m Z m Z m Z m Z m Z m Z m Z d d l m Z d d g Z  e j! j" d e# ƒ Z$ d e f d „  ƒ  YZ% d e& f d „  ƒ  YZ' d S(   s  
    celery.app.log
    ~~~~~~~~~~~~~~

    The Celery instances logging section: ``Celery.log``.

    Sets up logging for the worker and other programs,
    redirects stdouts, colors log output, patches logging
    related compatibility fixes, and so on.

i    (   t   absolute_importN(   t   WatchedFileHandler(   t   NullHandler(   t   set_default_encoding_file(   t   signals(   t   get_current_task(   t   class_propertyt   string_t(   t   isattyt   node_format(   t
   get_loggert   mlevelt   ColorFormattert   ensure_process_aware_loggert   LoggingProxyt   get_multiprocessing_loggert   reset_multiprocessing_logger(   t   coloredt   TaskFormattert   Loggingt   MP_LOGc           B@  s   e  Z d  „  Z RS(   c         C@  ss   t  ƒ  } | r= | j r= | j j d | j j d | j ƒ n& | j j d d ƒ | j j d d ƒ t j |  | ƒ S(   Nt   task_idt	   task_names   ???(	   R   t   requestt   __dict__t   updatet   idt   namet
   setdefaultR   t   format(   t   selft   recordt   task(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR   +   s    	(   t   __name__t
   __module__R   (    (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR   )   s   c           B@  s  e  Z e Z d  „  Z d d e d d d d „ Z d d d „ Z d d d d d d „ Z d „  Z	 d d d d e d „ Z
 d e e d „ Z d d d	 „ Z d d d
 „ Z e d „ Z d d „ Z d „  Z d „  Z d d „ Z d d „ Z e d „  ƒ Z e j d „  ƒ Z RS(   c         C@  s[   | |  _  t |  j  j j ƒ |  _ |  j  j j |  _ |  j  j j |  _ |  j  j j	 |  _
 d  S(   N(   t   appR   t   conft   CELERYD_LOG_LEVELt   loglevelt   CELERYD_LOG_FORMATR   t   CELERYD_TASK_LOG_FORMATt   task_formatt   CELERYD_LOG_COLORt   colorize(   R   R#   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyt   __init__<   s
    	t   WARNINGc         C@  s~   |  j  | | d | d | ƒ} | s= | r= |  j | ƒ q= n  t j j d | r[ t | ƒ n d d | rs t | ƒ n d ƒ | S(   NR+   t   hostnamet   CELERY_LOG_LEVELt    t   CELERY_LOG_FILE(   t   setup_logging_subsystemt   redirect_stdoutst   ost   environR   t   str(   R   R&   t   logfileR3   t   redirect_levelR+   R.   t   handled(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyt   setupC   s    s   celery.redirectedc         C@  sB   |  j  t | ƒ d | ƒt j j d d d t | p7 d ƒ ƒ d  S(   NR&   t   CELERY_LOG_REDIRECTt   1t   CELERY_LOG_REDIRECT_LEVELR0   (   t   redirect_stdouts_to_loggerR
   R4   R5   R   R6   (   R   R&   R   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR3   Q   s
    c         K@  s  |  j  r d  S| r+ | r+ t | | ƒ } n  t |  _  t | pC |  j ƒ } | pU |  j } |  j | | ƒ } t ƒ  t ƒ  t	 j
 j d d  d | d | d | d | ƒ } | s“t j ƒ  } |  j j j rÿ g  | _ g  t d ƒ _ g  t d ƒ _ g  t d ƒ _ n  |  j | | | | | |  |  j t ƒ  | t r6| n t j | | |  t	 j j d d  d	 | d | d | d | d | ƒ |  j | | d | ƒn  y t j ƒ  j d
 j }	 Wn t t f k
 rÆn Xt |	 ƒ t | t ƒ ræ| n d }
 t  j! j" d t# | ƒ d |
 d | ƒ | S(   Nt   senderR&   R7   R   R+   t   celerys   celery.tasks   celery.redirectedt   loggeri    R0   t   _MP_FORK_LOGLEVEL_t   _MP_FORK_LOGFILE_t   _MP_FORK_LOGFORMAT_($   t   already_setupR	   t   TrueR   R&   R   t   supports_colorR   R   R   t   setup_loggingt   sendt   Nonet   loggingt	   getLoggerR#   R$   t   CELERYD_HIJACK_ROOT_LOGGERt   handlersR
   t   _configure_loggerR   R   t   ERRORt   after_setup_loggert   setup_task_loggerst   streamt   AttributeErrort
   IndexErrorR   t
   isinstanceR   R4   R5   R   R6   (   R   R&   R7   R   R+   R.   t   kwargst	   receiverst   rootRS   t   logfile_name(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR2   Z   sR    			
c         K@  sB   | d  k	 r> |  j | | | | |  | r> | j | ƒ q> n  d  S(   N(   RJ   t   setup_handlerst   setLevel(   R   RA   R7   R&   R   R+   RW   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyRO   ˜   s
    
c         K@  s®   t  | p |  j ƒ } | p! |  j } |  j | | ƒ } |  j t d ƒ | | | d t | } | j | ƒ t | ƒ | _	 t
 j j d d	 d | d | d | d | d | ƒ | S(
   s•   Setup the task logger.

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

        Will return the base task logger object.

        s   celery.taskt	   formatterR?   RA   R&   R7   R   R+   N(   R   R&   R)   RG   R[   R
   R   R\   t   intt	   propagateR   t   after_setup_task_loggerRI   RJ   (   R   R&   R7   R   R+   R_   RW   RA   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyRR       s    		c         C@  s7   t  | | ƒ } | r! | t _ n  | r3 | t _ n  | S(   s÷   Redirect :class:`sys.stdout` and :class:`sys.stderr` to a
        logging instance.

        :param logger: The :class:`logging.Logger` instance to redirect to.
        :param loglevel: The loglevel redirected messages will be logged as.

        (   R   t   syst   stdoutt   stderr(   R   RA   R&   Rb   Rc   t   proxy(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR>   ¼   s    	c         C@  sZ   | d  k r |  j n | } |  j j r+ t S| s= | d  k rV | d  k oU t t j ƒ S| S(   N(   RJ   R+   R#   t
   IS_WINDOWSt   FalseR   Ra   Rc   (   R   R+   R7   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyRG   Ì   s    c         C@  s   t  d |  j | | ƒ ƒ S(   Nt   enabled(   R   RG   (   R   R7   Rg   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR   ×   s    c         K@  sL   |  j  | ƒ r | S|  j | ƒ } | j | | d | ƒƒ | j | ƒ | S(   Nt	   use_color(   t   _is_configuredt   _detect_handlert   setFormattert
   addHandler(   R   RA   R7   R   R+   R]   RW   t   handler(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR[   Ú   s    c         C@  sA   | d k r t j n | } t | d ƒ r7 t j | ƒ St | ƒ S(   s\   Create log handler with either a filename, an open stream
        or :const:`None` (stderr).t   writeN(   RJ   Ra   t
   __stderr__t   hasattrRK   t   StreamHandlerR   (   R   R7   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyRj   ã   s    c         C@  s$   | j  r  t d „  | j  Dƒ ƒ Sd  S(   Nc         s@  s   |  ] } t  | t ƒ Vq d  S(   N(   RV   R   (   t   .0t   h(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pys	   <genexpr>í   s    (   RN   t   any(   R   RA   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyt   _has_handlerë   s    	c         C@  s    |  j  | ƒ o t | d t ƒ S(   Nt   _rudimentary_setup(   Ru   t   getattrRf   (   R   RA   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyRi   ï   s    R@   c         O@  s   |  j  | | Ž  t j S(   s   Deprecated: No longer used.(   R2   RK   RY   (   R   R   t   argsRW   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyt   setup_loggeró   s    c         K@  s
   t  | ƒ S(   N(   R
   (   R   R   RW   (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyt   get_default_loggerø   s    c         C@  s   |  j  S(   N(   t   _setup(   t   cls(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyRE   û   s    c         C@  s   | |  _  d  S(   N(   R{   (   R|   t	   was_setup(    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyRE   ÿ   s    N(   R!   R"   Rf   R{   R,   RJ   R:   R3   R2   RO   RR   RF   R>   RG   R   R   R[   Rj   Ru   Ri   Ry   Rz   R   RE   t   setter(    (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyR   6   s,   				=				((   t   __doc__t
   __future__R    RK   R4   Ra   t   logging.handlersR   t	   kombu.logR   t   kombu.utils.encodingR   R@   R   t   celery._stateR   t   celery.fiveR   R   t   celery.utilsR   R	   t   celery.utils.logR
   R   R   R   R   R   R   t   celery.utils.termR   t   __all__R5   t   getRf   R   R   t   objectR   (    (    (    s0   /tmp/pip-unpacked-wheel-gV1wwp/celery/app/log.pyt   <module>   s"   4