diff --git a/proxy/common/constants.py b/proxy/common/constants.py index 9a41874574..745281165e 100644 --- a/proxy/common/constants.py +++ b/proxy/common/constants.py @@ -82,7 +82,7 @@ def _env_threadless_compliant() -> bool: DEFAULT_LOG_FILE = None DEFAULT_LOG_FORMAT = '%(asctime)s - pid:%(process)d [%(levelname)-.1s] %(module)s.%(funcName)s:%(lineno)d - %(message)s' DEFAULT_LOG_LEVEL = 'INFO' -DEFAULT_WEB_ACCESS_LOG_FORMAT = '{client_addr} - {request_method} {request_path} - {connection_time_ms}ms' +DEFAULT_WEB_ACCESS_LOG_FORMAT = '{client_ip}:{client_port} - {request_method} {request_path} - {connection_time_ms}ms' DEFAULT_HTTP_ACCESS_LOG_FORMAT = '{client_ip}:{client_port} - ' + \ '{request_method} {server_host}:{server_port}{request_path} - ' + \ '{response_code} {response_reason} - {response_bytes} bytes - ' + \ diff --git a/proxy/http/proxy/server.py b/proxy/http/proxy/server.py index 1c13458986..87ab852f0f 100644 --- a/proxy/http/proxy/server.py +++ b/proxy/http/proxy/server.py @@ -340,11 +340,9 @@ def on_client_connection_close(self) -> None: 'request_method': text_(self.request.method), 'request_path': text_(self.request.path), 'request_bytes': self.request.total_size, - 'request_code': self.request.code, 'request_ua': self.request.header(b'user-agent') if self.request.has_header(b'user-agent') else None, - 'request_reason': self.request.reason, 'request_version': self.request.version, # Response 'response_bytes': self.response.total_size, diff --git a/proxy/http/server/web.py b/proxy/http/server/web.py index 5c9c3630df..bf7a301c63 100644 --- a/proxy/http/server/web.py +++ b/proxy/http/server/web.py @@ -301,10 +301,28 @@ def on_client_connection_close(self) -> None: if self.request.has_host(): return context = { - 'client_addr': self.client.address, + 'client_ip': None if not self.client.addr else self.client.addr[0], + 'client_port': None if not self.client.addr else self.client.addr[1], + 'connection_time_ms': '%.2f' % ((time.time() - self.start_time) * 1000), + # Request 'request_method': text_(self.request.method), 'request_path': text_(self.request.path), - 'connection_time_ms': '%.2f' % ((time.time() - self.start_time) * 1000), + 'request_bytes': self.request.total_size, + 'request_ua': self.request.header(b'user-agent') + if self.request.has_header(b'user-agent') + else None, + 'request_version': self.request.version, + # Response + # + # TODO: Track and inject web server specific response attributes + # Currently, plugins are allowed to queue raw bytes, because of + # which we'll have to reparse the queued packets to deduce + # several attributes required below. At least for code and + # reason attributes. + # + # 'response_bytes': self.response.total_size, + # 'response_code': text_(self.response.code), + # 'response_reason': text_(self.response.reason), } log_handled = False if self.route: