³ò
®d|Mc           @   sÄ   d  Z  d d k Z d d k Z d d k l Z e i d ƒ Z e i e i j o e i	 e i
 ƒ n e a d „  Z e ƒ  Z e d „ Z d e f d „  ƒ  YZ d d	 „ Z d
 e f d „  ƒ  YZ d S(   s?  Logging control and utilities.

Control of logging for SA can be performed from the regular python logging
module.  The regular dotted module namespace is used, starting at
'sqlalchemy'.  For class-level logging, the class name is appended.

The "echo" keyword parameter which is available on SQLA ``Engine``
and ``Pool`` objects corresponds to a logger specific to that 
instance only.

E.g.::

    engine.echo = True

is equivalent to::

    import logging
    logger = logging.getLogger('sqlalchemy.engine.Engine.%s' % hex(id(engine)))
    logger.setLevel(logging.DEBUG)

iÿÿÿÿN(   t   utilt
   sqlalchemyc         C   ss   t  i |  ƒ i ƒ  t  i j  o
 t a n t p? t a t  i t i ƒ } | i	 t  i
 d ƒ ƒ t i | ƒ n d  S(   Ns.   %(asctime)s %(levelname)s %(name)s %(message)s(   t   loggingt	   getLoggert   getEffectiveLevelt   WARNt   Truet   default_enabledt   StreamHandlert   syst   stdoutt   setFormattert	   Formattert
   rootloggert
   addHandler(   t   namet   handler(    (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyt   default_logging&   s    

c            s   t  i |  i d |  i ƒ ‰  | d j o ˆ  i t  i ƒ n" | d j o ˆ  i t  i ƒ n ‡  f d †  |  _ ‡  f d †  |  _ ˆ  |  _	 t
 i |  ƒ d  S(   Nt   .t   debugt   infoc            s   ˆ  i  t i ƒ S(    (   t   isEnabledForR   t   DEBUG(   t   self(   t   logger(    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyt   <lambda>8   s    c            s   ˆ  i  t i ƒ S(    (   R   R   t   INFO(   R   (   R   (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyR   9   s    (   R   R   t
   __module__t   __name__t   setLevelR   R   t   _should_log_debugt   _should_log_infoR   t   _logged_classest   add(   t   clst   enable(    (   R   sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyt   class_logger2   s    	t
   Identifiedc           B   s   e  Z e i d  „  ƒ Z RS(   c         C   s   d t  t |  ƒ ƒ d S(   Ns   0x...%siüÿÿÿ(   t   hext   id(   R   (    (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyt   logging_name?   s    (   R   R   R    t   memoized_propertyR(   (    (    (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyR%   >   s   c            sð   d |  i  i |  i  i |  i f } | d j	 oŠ t i | ƒ ‰  | d j o t | ƒ ˆ  i t i	 ƒ qÈ | t
 j o t | ƒ ˆ  i t i ƒ qÈ | t j o ˆ  i t i ƒ qÈ n t i | ƒ ‰  ‡  f d †  |  _ ‡  f d †  |  _ ˆ  S(   sþ   create a logger for an instance that implements :class:`Identified`.

    Warning: this is an expensive call which also results in a permanent
    increase in memory overhead for each call.  Use only for 
    low-volume, long-time-spanning objects.

    s   %s.%s.%sR   c              s   ˆ  i  t i ƒ S(    (   R   R   R   (    (   t   l(    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyR   `   s    c              s   ˆ  i  t i ƒ S(    (   R   R   R   (    (   R*   (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyR   a   s    N(   t	   __class__R   R   R(   t   NoneR   R   R   R   R   R   R   t   FalseR   R   R   (   t   instancet   echoflagR   (    (   R*   sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyt   instance_loggerH   s     	

t   echo_propertyc           B   s    e  Z d  Z d „  Z d „  Z RS(   s}      When ``True``, enable log output for this element.

    This has the effect of setting the Python logging level for the namespace
    of this element's class and object reference.  A value of boolean ``True``
    indicates that the loglevel ``logging.INFO`` will be set for the logger,
    whereas the string value ``debug`` will set the loglevel to
    ``logging.DEBUG``.
    c         C   sE   | d  j o |  Sn- | i ƒ  o d p | i ƒ  o t p t Sd  S(   NR   (   R,   R   R   R   R-   (   R   R.   t   owner(    (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyt   __get__o   s    c         C   s   t  | d | ƒd  S(   NR/   (   R0   (   R   R.   t   value(    (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyt   __set__v   s    (   R   R   t   __doc__R3   R5   (    (    (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pyR1   d   s   		(   R6   R   R	   R   R    R   R   t   levelt   NOTSETR   R   R-   R   R   t   setR    R$   t   objectR%   R,   R0   R1   (    (    (    sk   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.5/site-packages/SQLAlchemy-0.6.6-py2.5.egg/sqlalchemy/log.pys   <module>   s   		
