B
    6d                 @   s\   d dl Z d dlmZmZ d dlmZ ddlmZ dddd	d
dhZe	e	dddZ
dd ZdS )    N)urlparse
urlunparse)
access_log   )prometheus_log_methodtokenauthkeycodestateZxsrf)urireturnc       
      C   s   t | }|jr|jd}d}xPt|D ]D\}}|d\}}}x*tD ]"}	|	|krF| | d||< d}qFW q(W |r|jd|d}t|S | S )zscrub auth info from uri&F=z[secret]T)query)	r   r   split	enumerate	partition_SCRUB_PARAM_KEYS_replacejoinr   )
r   parsedpartschangedisr	   sepvalueZ	substring r   _/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/jupyter_server/log.py
_scrub_uri   s    
r    c       
      C   s0  |   }| j}y
| j}W n tk
r0   t}Y nX |dk sB|dkrJ|j}n&|dk rZ|j}n|dk rj|j}n|j}d| j	  }t
||j|jt|j|d}d}|dkrt|jdd	|d
< |d }|dkr|dkri }x$dD ]}	|	|jkr|j|	 ||	< qW |tj|dd ||jf | t|  dS )a  log a bit more information about each request than tornado's default

    - move static file get success to debug-level (reduces noise)
    - get proxied IP instead of proxy IP
    - log referer for redirect and failed requests
    - log user-agent for failed requests
    i,  i0  i  i  g     @@)statusmethodipr   request_timez3{status} {method} {uri} ({ip}) {request_time:.2f}msRefererNoneZrefererz referer={referer}i  )HostAcceptr%   z
User-Agent   )indentN)Z
get_statusrequestlogAttributeErrorr   debuginfowarningerrorr$   dictr"   Z	remote_ipr    r   headersgetjsondumpsformatr   )
handlerr!   r+   loggerZ
log_methodr$   nsmsgr3   headerr   r   r   log_request)   s@    



r=   )r5   urllib.parser   r   Ztornado.logr   Zprometheus.log_functionsr   r   strr    r=   r   r   r   r   <module>   s   