B
    ;¹=[·  ã               @   sr   d Z ddlmZ ddlZddlZddlmZ ddlmZ edd„ ƒZ	d	d
„ Z
e e	¡Ze e d¡¡ dd„ ZdS )ut   
flask.logging
~~~~~~~~~~~~~

:copyright: Â© 2010 by the Pallets team.
:license: BSD, see LICENSE for more details.
é    )Úabsolute_importN)Ú
LocalProxyé   )Úrequestc               C   s   t rt jd S tjS )a•  Find the most appropriate error stream for the application. If a request
    is active, log to ``wsgi.errors``, otherwise use ``sys.stderr``.

    If you configure your own :class:`logging.StreamHandler`, you may want to
    use this for the stream. If you are using file or dict configuration and
    can't import this directly, you can refer to it as
    ``ext://flask.logging.wsgi_errors_stream``.
    zwsgi.errors)r   ÚenvironÚsysÚstderr© r	   r	   ú,lib/python3.7/site-packages/flask/logging.pyÚwsgi_errors_stream   s    
r   c                sD   |   ¡ ‰ | }x2|r>t‡ fdd„|jD ƒƒr.dS |js6P |j}qW dS )zšCheck if there is a handler in the logging chain that will handle the
    given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`.
    c             3   s   | ]}|j ˆ kV  qd S )N)Úlevel)Ú.0Zhandler)r   r	   r
   ú	<genexpr>)   s    z$has_level_handler.<locals>.<genexpr>TF)ZgetEffectiveLevelÚanyZhandlersZ	propagateÚparent)ÚloggerZcurrentr	   )r   r
   Úhas_level_handler!   s    
r   z6[%(asctime)s] %(levelname)s in %(module)s: %(message)sc             C   s>   t  d¡}| jr(|jt jkr(| t j¡ t|ƒs:| t	¡ |S )ac  Get the ``'flask.app'`` logger and configure it if needed.

    When :attr:`~flask.Flask.debug` is enabled, set the logger level to
    :data:`logging.DEBUG` if it is not set.

    If there is no handler for the logger's effective level, add a
    :class:`~logging.StreamHandler` for
    :func:`~flask.logging.wsgi_errors_stream` with a basic format.
    z	flask.app)
ÚloggingZ	getLoggerÚdebugr   ZNOTSETZsetLevelÚDEBUGr   Z
addHandlerÚdefault_handler)Zappr   r	   r	   r
   Úcreate_logger<   s    


r   )Ú__doc__Z
__future__r   r   r   Zwerkzeug.localr   Úglobalsr   r   r   ZStreamHandlerr   ZsetFormatterZ	Formatterr   r	   r	   r	   r
   Ú<module>   s   
