[Python-checkins] r81143 - tracker/instances/python-dev/lib/openid.py

martin.v.loewis python-checkins at python.org
Thu May 13 20:36:35 CEST 2010


Author: martin.v.loewis
Date: Thu May 13 20:36:35 2010
New Revision: 81143

Log:
Add logging support


Modified:
   tracker/instances/python-dev/lib/openid.py

Modified: tracker/instances/python-dev/lib/openid.py
==============================================================================
--- tracker/instances/python-dev/lib/openid.py	(original)
+++ tracker/instances/python-dev/lib/openid.py	Thu May 13 20:36:35 2010
@@ -11,7 +11,7 @@
 # - direct requests require https
 # - as a signature algorithm, HMAC-SHA1 is requested
 
-import urlparse, urllib, httplib, BeautifulSoup, time
+import urlparse, urllib, httplib, BeautifulSoup, time, os
 import cStringIO, base64, hmac, sha, datetime, re, binascii, struct
 import itertools
 
@@ -31,6 +31,8 @@
 # Don't use urllib, since it sometimes selects HTTP/1.1 (e.g. in PyPI)
 # and then fails to parse chunked responses.
 
+logfile = None
+
 def normalize_uri(uri):
     """Normalize an uri according to OpenID section 7.2. Return a pair
     type,value, where type can be either 'xri' or 'uri'."""
@@ -536,6 +538,62 @@
     # TODO: SREG 1.1
     return
 
+if logfile:
+    reqno = 0
+
+    def log_line(l):
+        f = open(logfile, 'a')
+        f.write(l)
+        f.close()
+        if reqno % 1000 == 0:
+            if os.stat(logfile).st_size > 10**7:
+                try:
+                    os.unlink(logfile+".1")
+                except:
+                    pass
+                os.rename(logfile, logfile+".1")
+
+    def enter(func, params):
+        global reqno
+        reqno += 1
+        log_line("%d %d %d enter %s %s\n" % (int(time.time()), os.getpid(), reqno, func, params))
+        return reqno
+
+    def exit(reqno):
+        log_line("%d %d %d exit\n" % (int(time.time()), os.getpid(), reqno))
+
+    orig_normalize_uri = normalize_uri
+    def normalize_uri(uri):
+        reqno = enter("normalize_uri", uri)
+        try:
+            return orig_normalize_uri(uri)
+        finally:
+            exit(reqno)
+
+    orig_discover = discover
+    def discover(url):
+        reqno = enter("discover", url)
+        try:
+            return orig_discover(url)
+        finally:
+            exit(reqno)
+
+    orig_associate = associate
+    def associate(services, url):
+        reqno = enter("associate", url)
+        try:
+            return orig_associate(services, url)
+        finally:
+            exit(reqno)
+
+    orig_request_authentication = request_authentication
+    def request_authentication(*args, **kw):
+        reqno = enter("request_authentication", args[1])
+        try:
+            return orig_request_authentication(*args, **kw)
+        finally:
+            exit(reqno)
+
 
 ################ Test Server #################################
 


More information about the Python-checkins mailing list