Răsfoiți Sursa

improved request logging

Peter Bieringer 9 ani în urmă
părinte
comite
d116423458
1 a modificat fișierele cu 17 adăugiri și 3 ștergeri
  1. 17 3
      radicale/__init__.py

+ 17 - 3
radicale/__init__.py

@@ -40,6 +40,7 @@ import threading
 import urllib
 import wsgiref.simple_server
 import zlib
+import datetime
 from http import client
 from urllib.parse import unquote, urlparse
 
@@ -295,15 +296,28 @@ 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"], (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 = "unkown"
+        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"]
+        time_begin = datetime.datetime.now()
+        self.logger.info("%s request for %s received from %s using \"%s\"",
+                         environ["REQUEST_METHOD"], environ["PATH_INFO"], remote_host, remote_useragent)
         headers = pprint.pformat(self.headers_log(environ))
         self.logger.debug("Request headers:\n%s", headers)