B
    Cem                 @   sx   d dl Z d dlmZmZ er<d dlmZmZmZmZm	Z	m
Z
 d dlmZ dddddZeed	d
dZG dd dZdS )    N)TYPE_CHECKINGAny)ASGI3ApplicationASGIReceiveCallableASGIReceiveEventASGISendCallableASGISendEventWWWScope)TRACE_LOG_LEVELz<{length} bytes>z<{length} chars>z<...>)bodybytestextheaders)messagereturnc             C   sP   |   }xBt D ]6}| |dk	r| | }t| jt|d}|||< qW |S )zi
    Return an ASGI message, with any body-type content omitted and replaced
    with a placeholder.
    N)length)copyPLACEHOLDER_FORMATkeysgetformatlen)r   Znew_messageattrcontentplaceholder r   u/var/www/downstreamdata.science/rtclock/rtclock-venv/lib/python3.7/site-packages/uvicorn/middleware/message_logger.pymessage_with_placeholders   s    r   c               @   s.   e Zd ZddddZddddd	d
dZdS )MessageLoggerMiddlewarer   )appc                s<   d _ | _td _tttd d fdd}| j_d S )Nr   zuvicorn.asgi)r   argskwargsr   c                s    j jt| f|| d S )N)loggerlogr
   )r   r    r!   )selfr   r   trace,   s    z/MessageLoggerMiddleware.__init__.<locals>.trace)task_counterr   logging	getLoggerr"   r   r%   )r$   r   r%   r   )r$   r   __init__'   s
    z MessageLoggerMiddleware.__init__r	   r   r   N)scopereceivesendr   c       
   
      s    j d7  _ j |d}|r6d|d |d f nd dd fdd	}d
d d fdd}t|}d}j| | y|||I d H  W n< tk
r }	 zd}j|  |	d W d d }	~	X Y nX d}j|  d S )N   clientz%s:%d - ASGIr   ZASGIr   )r   c                 s.    I d H } t | }d}j| | | S )Nz%s [%d] Receive %s)r   r"   r%   )r   logged_messagelog_text)prefixr+   r$   r&   r   r   inner_receive=   s    z7MessageLoggerMiddleware.__call__.<locals>.inner_receiver   )r   r   c                s0   t | }d}j| | | I d H  d S )Nz%s [%d] Send %s)r   r"   r%   )r   r/   r0   )r1   r$   r,   r&   r   r   
inner_sendF   s
    z4MessageLoggerMiddleware.__call__.<locals>.inner_sendz%s [%d] Started scope=%sz%s [%d] Raised exceptionz%s [%d] Completed)r&   r   r   r"   r%   r   BaseException)
r$   r*   r+   r,   r.   r2   r3   Zlogged_scoper0   excr   )r1   r+   r$   r,   r&   r   __call__1   s"    
	z MessageLoggerMiddleware.__call__)__name__
__module____qualname__r)   r6   r   r   r   r   r   &   s
   r   )r'   typingr   r   Zasgiref.typingr   r   r   r   r   r	   Zuvicorn.loggingr
   r   r   r   r   r   r   r   <module>   s    	