ó
N_c           @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d Z d Z d Z d Z	 d Z
 d Z e j e d	  e j e d
  e j e d  e j e	 d  e j e
 d  e j e d  d Z e e _ d d l m Z d a i e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j  d 6e j! d 6e j" d 6e j# d  6e j$ d! 6Z% d"   Z& d#   Z' d$   Z( d%   Z) d&   Z* d'   Z+ e a, d d d( d)  Z- d d*  Z. d+   Z/ d S(,   sY   
Custom logging levels for finer-grained logging using python's standard
logging module.
i˙˙˙˙Ni   i   i	   i   i   i   t   INFO_1t   INFO_2t   DEBUG_1t   DEBUG_2t   DEBUG_3t   DEBUG_4id   (   t   SysLogHandlert   KERNt   USERt   MAILt   DAEMONt   AUTHt   LPRt   NEWSt   UUCPt   CRONt   LOCAL0t   LOCAL1t   LOCAL2t   LOCAL3t   LOCAL4t   LOCAL5t   LOCAL6t   LOCAL7c         C   s{   t  |   t k r |  S|  j   t k r6 t |  j   S|  j   j d  rs |  d j   t k rs t |  d j   St d S(   Nt   LOG_i   R   (   t   typet   intt   uppert   _syslog_facility_mapt
   startswith(   t   facility(    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   syslogFacilityMapG   s    c         C   s8   i t  d 6t j d 6t j d 6t j d 6} t |  |  S(   s<    Convert an old-style error logging level to the new style. i˙˙˙˙i    i   i   (   t   __NO_LOGGINGt   loggingt   CRITICALt   ERRORt   WARNINGt   __convertLevel(   t   error_levelt   error_table(    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   logLevelFromErrorLevelQ   s    c         C   s}   i t  d 6t j d 6t j d 6t j d 6t  d 6t j d 6t d 6t d 6t j d	 6t	 d
 6t
 d 6t d 6t d 6} t |  |  S(   s<    Convert an old-style debug logging level to the new style. iű˙˙˙iü˙˙˙iý˙˙˙iţ˙˙˙i˙˙˙˙i    i   i   i   i   i   i   i   (   R    R!   R"   R#   R$   t   INFOR    R   t   DEBUGR   R   R   R   R%   (   t   debug_levelt   debug_table(    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   logLevelFromDebugLevelX   s
    
)c         C   sg   y | |  } WnR t  k
 rb t | j    } |  | d k  rQ | | d } qc | | d } n X| S(   s2    Convert yum logging levels using a lookup table. i    iţ˙˙˙(   t   KeyErrort   sortedt   keys(   t   levelt   tablet	   new_levelR0   (    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyR%   a   s    c         C   s&   t  |   } t j d  j |  d  S(   Ns   yum.verbose(   R-   R!   t	   getLoggert   setLevel(   R1   t   converted_level(    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   setDebugLevelr   s    c         C   s&   t  |   } t j d  j |  d  S(   Nt   yum(   R(   R!   R4   R5   (   R1   R6   (    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   setErrorLevelv   s    s   /dev/logc         C   s  t  r< |  d k	 r t |   n  | d k	 r8 t |  n  d St j d  } t j t j  } | j	 |  t j
 d  } t | _ | j |  t j t j  } | j	 |  t j
 d  }	 t |	 _ |	 j |  t j
 d  }
 |
 j t j  t |
 _ | rád } d | k rB| j d d  } | d t | d  f } n t j j |  r]| } n  | ráy+ t | prd	  } t j j | |  a Wn- t j k
 r˝t d k	 rŰt j   qŰqŢXt | pĘd  |
 j t  qán  t a  |  d k	 r t |   n  | d k	 rt |  n  d S(
   s;  
    Configure the python logger.
    
    errorlevel is optional. If provided, it will override the logging level
    provided in the logging config file for error messages.
    debuglevel is optional. If provided, it will override the logging level
    provided in the logging config file for debug messages.
    Ns   %(message)ss   yum.verboseR8   s   yum.fileloggingt   :i   i    R   (   t   _added_handlerst   NoneR7   R9   R!   t	   Formattert   StreamHandlert   syst   stdoutt   setFormatterR4   t   Falset	   propagatet
   addHandlert   stderrR5   R)   t   rsplitR   t   ost   patht   existsR   t   handlersR   t   syslogt   sockett   errort   closet   setLoggingAppt   True(   t
   debuglevelt
   errorlevelt   syslog_identt   syslog_facilityt   syslog_devicet   plainformattert   console_stdoutt   verboset   console_stderrt   loggert
   fileloggert   addresst   facil(    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   doLoggingSetup{   sR    				c            s.  |  d k r*yî t  j j |  } t  j j |  sI t  j | d d n  t  j j |  s t | d  } t  j | d  | j   n  t j	 d   t j
 |    t j d d  }   j |   j    | d  k	 rů | j    f d	    n  Wq*t k
 r&t j	 d
  j d |  q*Xn  d  S(   Ni    t   modeií  t   wi  s   yum.fileloggings   %(asctime)s %(message)ss   %b %d %H:%M:%Sc              s    j     S(   N(   t   removeHandler(    (   t   filehandlerR[   (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   <lambda>Ö   s    R8   s   Cannot open logfile %s(   RG   RH   t   dirnameRI   t   makedirst   opent   chmodRN   R!   R4   t   FileHandlerR=   RA   RD   R<   t   appendt   IOErrort   critical(   t   uidt   logfilet   cleanupt   logdirt   ft	   formatter(    (   Rb   R[   s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt
   setFileLogż   s&    		 c         C   s-   t  r) t j |  d  } t  j |  n  d  S(   Ns   [%(process)d]: %(message)s(   RK   R!   R=   RA   (   t   appt   syslogformatter(    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyRO   Ú   s    (0   t   __doc__RG   RL   R?   R!   t   logging.handlersR    R   R   R   R   R   t   addLevelNameR    RB   t   raiseExceptionsR   t   syslog_moduleR<   RK   t   LOG_KERNt   LOG_USERt   LOG_MAILt
   LOG_DAEMONt   LOG_AUTHt   LOG_LPRt   LOG_NEWSt   LOG_UUCPt   LOG_CRONt
   LOG_LOCAL0t
   LOG_LOCAL1t
   LOG_LOCAL2t
   LOG_LOCAL3t
   LOG_LOCAL4t
   LOG_LOCAL5t
   LOG_LOCAL6t
   LOG_LOCAL7R   R   R(   R-   R%   R7   R9   R;   R^   Rr   RO   (    (    (    s5   /usr/lib/python2.7/site-packages/yum/logginglevels.pyt   <module>   sb   	














	
						B