]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-39826: add getConnection() hook to logging HTTPHandler (GH-18745)
authorl0rb <lorbritzer@yahoo.de>
Wed, 4 Mar 2020 10:49:51 +0000 (11:49 +0100)
committerGitHub <noreply@github.com>
Wed, 4 Mar 2020 10:49:51 +0000 (10:49 +0000)
Lib/logging/handlers.py
Misc/NEWS.d/next/Library/2020-03-02-15-15-01.bpo-39826.DglHk7.rst [new file with mode: 0644]

index 047798f6dc1450c40817218fe921e97a486f6e59..4a120e9f1ec48f2c7236f24d785314da9083f91a 100644 (file)
@@ -1173,6 +1173,20 @@ class HTTPHandler(logging.Handler):
         """
         return record.__dict__
 
+    def getConnection(self, host, secure):
+        """
+        get a HTTP[S]Connection.
+
+        Override when a custom connection is required, for example if
+        there is a proxy.
+        """
+        import http.client
+        if secure:
+            connection = http.client.HTTPSConnection(host, context=self.context)
+        else:
+            connection = http.client.HTTPConnection(host)
+        return connection
+
     def emit(self, record):
         """
         Emit a record.
@@ -1180,12 +1194,9 @@ class HTTPHandler(logging.Handler):
         Send the record to the Web server as a percent-encoded dictionary
         """
         try:
-            import http.client, urllib.parse
+            import urllib.parse
             host = self.host
-            if self.secure:
-                h = http.client.HTTPSConnection(host, context=self.context)
-            else:
-                h = http.client.HTTPConnection(host)
+            h = self.getConnection(host, self.secure)
             url = self.url
             data = urllib.parse.urlencode(self.mapLogRecord(record))
             if self.method == "GET":
diff --git a/Misc/NEWS.d/next/Library/2020-03-02-15-15-01.bpo-39826.DglHk7.rst b/Misc/NEWS.d/next/Library/2020-03-02-15-15-01.bpo-39826.DglHk7.rst
new file mode 100644 (file)
index 0000000..e425bbe
--- /dev/null
@@ -0,0 +1 @@
+Add getConnection method to logging HTTPHandler to enable custom connections.
\ No newline at end of file