bpo-39826: add getConnection() hook to logging HTTPHandler (GH-18745)

This commit is contained in:
l0rb 2020-03-04 11:49:51 +01:00 committed by GitHub
parent be501ca241
commit 22a9a546ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 5 deletions

View 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":

View File

@ -0,0 +1 @@
Add getConnection method to logging HTTPHandler to enable custom connections.