Merge pull request #518 from pbiering/improved-access-logging

improved request logging
This commit is contained in:
Guillaume Ayoub 2017-02-26 16:17:44 +01:00 committed by GitHub
commit e6880057a2

View File

@ -39,6 +39,7 @@ import ssl
import threading
import wsgiref.simple_server
import zlib
import datetime
from http import client
from urllib.parse import unquote, urlparse
@ -295,15 +296,32 @@ class Application:
headers[key] = self.configuration.get("headers", key)
# Start response
time_end = datetime.datetime.now()
status = "%i %s" % (
status, client.responses.get(status, "Unknown"))
self.logger.debug("Answer status: %s", status)
self.logger.info("%s answer status for %s in %s sec: %s", environ["REQUEST_METHOD"], environ["PATH_INFO"] + depthinfo, (time_end - time_begin).total_seconds(), status)
start_response(status, list(headers.items()))
# Return response content
return [answer] if answer else []
self.logger.info("%s request at %s received",
environ["REQUEST_METHOD"], environ["PATH_INFO"])
remote_host = "UNKNOWN"
if "REMOTE_HOST" in environ:
if environ["REMOTE_HOST"]:
remote_host = environ["REMOTE_HOST"]
if "HTTP_X_FORWARDED_FOR" in environ:
if environ["HTTP_X_FORWARDED_FOR"]:
remote_host = environ["HTTP_X_FORWARDED_FOR"]
remote_useragent = "[-no-user-agent-provided-]"
if "HTTP_USER_AGENT" in environ:
if environ["HTTP_USER_AGENT"]:
remote_useragent = environ["HTTP_USER_AGENT"]
depthinfo = ""
if "HTTP_DEPTH" in environ:
if environ["HTTP_DEPTH"]:
depthinfo = " with depth " + environ["HTTP_DEPTH"]
time_begin = datetime.datetime.now()
self.logger.info("%s request for %s received from %s using \"%s\"",
environ["REQUEST_METHOD"], environ["PATH_INFO"] + depthinfo, remote_host, remote_useragent)
headers = pprint.pformat(self.headers_log(environ))
self.logger.debug("Request headers:\n%s", headers)