diff options
author | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2010-09-13 20:40:30 (GMT) |
---|---|---|
committer | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2010-09-13 20:40:30 (GMT) |
commit | af9d10aa30fc1e3dd043519b2ea145c4a06c9199 (patch) | |
tree | 734c02f2d3d8011afdb1f394b67b515b314cda70 /Lib/logging | |
parent | 1b5646ac569e493721364856b45629d6e5a46d6a (diff) | |
download | cpython-af9d10aa30fc1e3dd043519b2ea145c4a06c9199.zip cpython-af9d10aa30fc1e3dd043519b2ea145c4a06c9199.tar.gz cpython-af9d10aa30fc1e3dd043519b2ea145c4a06c9199.tar.bz2 |
logging: enhanced HTTPHandler
Diffstat (limited to 'Lib/logging')
-rw-r--r-- | Lib/logging/handlers.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index 487cdd5..744f59b 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -977,7 +977,7 @@ class HTTPHandler(logging.Handler): A class which sends records to a Web server, using either GET or POST semantics. """ - def __init__(self, host, url, method="GET"): + def __init__(self, host, url, method="GET", secure=False, credentials=None): """ Initialize the instance with the host, the request URL, and the method ("GET" or "POST") @@ -989,12 +989,14 @@ class HTTPHandler(logging.Handler): self.host = host self.url = url self.method = method + self.secure = secure + self.credentials = credentials def mapLogRecord(self, record): """ Default implementation of mapping the log record into a dict that is sent as the CGI data. Overwrite in your class. - Contributed by Franz Glasner. + Contributed by Franz Glasner. """ return record.__dict__ @@ -1007,7 +1009,10 @@ class HTTPHandler(logging.Handler): try: import http.client, urllib.parse host = self.host - h = http.client.HTTP(host) + if self.secure: + h = http.client.HTTPSConnection(host) + else: + h = http.client.HTTPConnection(host) url = self.url data = urllib.parse.urlencode(self.mapLogRecord(record)) if self.method == "GET": @@ -1027,8 +1032,13 @@ class HTTPHandler(logging.Handler): h.putheader("Content-type", "application/x-www-form-urlencoded") h.putheader("Content-length", str(len(data))) + if self.credentials: + import base64 + s = ('u%s:%s' % self.credentials).encode('utf-8') + s = 'Basic ' + base64.b64encode(s).strip() + h.putheader('Authorization', s) h.endheaders(data if self.method == "POST" else None) - h.getreply() #can't do anything with the result + h.getresponse() #can't do anything with the result except (KeyboardInterrupt, SystemExit): raise except: |