3
€»eá  ã               @   s˜   d dl Z d dlZd dlZd dlmZ ddlmZ ejrBddl	m
Z
 eejdœdd„ƒZe jed	œd
d„Ze jeƒZeje jdƒƒ de jdœdd„ZdS )é    N)Ú
LocalProxyé   )Úrequest)ÚFlask)Úreturnc               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
   ú./tmp/pip-build-3irwxpxt/Flask/flask/logging.pyÚwsgi_errors_stream   s    
r   )Úloggerr   c                sD   | j ƒ ‰ | }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)Ú.0Úhandler)r   r
   r   ú	<genexpr>"   s    z$has_level_handler.<locals>.<genexpr>TF)ÚgetEffectiveLevelÚanyÚhandlersÚ	propagateÚparent)r   Úcurrentr
   )r   r   Úhas_level_handler   s    
r   z6[%(asctime)s] %(levelname)s in %(module)s: %(message)sr   )Úappr   c             C   s<   t j| jƒ}| jr&|j r&|jt jƒ t|ƒs8|jt	ƒ |S )a¸  Get the Flask app's logger and configure it if needed.

    The logger name will be the same as
    :attr:`app.import_name <flask.Flask.name>`.

    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.
    )
ÚloggingÚ	getLoggerÚnameÚdebugr   ÚsetLevelÚDEBUGr   Ú
addHandlerÚdefault_handler)r   r   r
   r
   r   Úcreate_logger5   s    
r"   )r   r   ÚtypingÚtZwerkzeug.localr   Úglobalsr   ZTYPE_CHECKINGr   r   ZTextIOr   ÚLoggerÚboolr   ÚStreamHandlerr!   ÚsetFormatterÚ	Formatterr"   r
   r
   r
   r   Ú<module>   s   
