]> git.parisson.com Git - django-social-auth.git/commitdiff
Improve logging. Closes #244
authorMatías Aguirre <matiasaguirre@gmail.com>
Thu, 9 Feb 2012 04:11:59 +0000 (02:11 -0200)
committerMatías Aguirre <matiasaguirre@gmail.com>
Thu, 9 Feb 2012 04:17:43 +0000 (02:17 -0200)
12 files changed:
social_auth/backends/__init__.py
social_auth/backends/contrib/foursquare.py
social_auth/backends/contrib/github.py
social_auth/backends/contrib/linkedin.py
social_auth/backends/contrib/livejournal.py
social_auth/backends/contrib/orkut.py
social_auth/backends/facebook.py
social_auth/backends/google.py
social_auth/backends/twitter.py
social_auth/backends/yahoo.py
social_auth/utils.py
social_auth/views.py

index f01ceba6c1e882856f8924417995d5f7cf9f3d25..4a946d243c23c3f7d8fffbf8c79b8954b230c35a 100644 (file)
@@ -9,9 +9,6 @@ Also the modules *must* define a BACKENDS dictionary with the backend name
 (which is used for URLs matching) and Auth class, otherwise it won't be
 enabled.
 """
-import logging
-logger = logging.getLogger(__name__)
-
 from urllib2 import Request, urlopen
 from urllib import urlencode
 from urlparse import urlsplit
@@ -29,7 +26,7 @@ from django.contrib.auth.backends import ModelBackend
 from django.utils import simplejson
 from django.utils.importlib import import_module
 
-from social_auth.utils import setting
+from social_auth.utils import setting, log
 from social_auth.store import DjangoOpenIDStore
 from social_auth.backends.exceptions import StopPipeline
 
@@ -135,7 +132,7 @@ class SocialAuthBackend(ModelBackend):
             try:
                 mod = import_module(mod_name)
             except ImportError:
-                logger.exception('Error importing pipeline %s', name)
+                log('exception', 'Error importing pipeline %s', name)
             else:
                 func = getattr(mod, func_name, None)
 
@@ -690,4 +687,4 @@ def get_backend(name, *args, **kwargs):
 
 BACKENDS = {
     'openid': OpenIdAuth
-}
\ No newline at end of file
+}
index 9e70d9ef89590e4b02e52c2d5e3cec14d6a36161..0ba718a1c27169ed7cf71294fc886ebb8d18f8e2 100644 (file)
@@ -1,6 +1,4 @@
 import urllib
-import logging
-logger = logging.getLogger(__name__)
 
 from django.utils import simplejson
 
index 11df0e08aa40af33aebd5e91aaf4acb64d346529..b866ca35979f785c28e375e09935aad8f1b25853 100644 (file)
@@ -13,9 +13,6 @@ field, check OAuthBackend class for details on how to extend it.
 """
 import cgi
 import urllib
-import logging
-logger = logging.getLogger(__name__)
-
 
 from django.utils import simplejson
 from django.contrib.auth import authenticate
index 94fae9fc3f7ef043e72f3a7414088ed0908f15fe..ae9271655b1a2d4427cc9b4c2623f2e595d408d8 100644 (file)
@@ -3,9 +3,6 @@ Linkedin OAuth support
 
 No extra configurations are needed to make this work.
 """
-import logging
-logger = logging.getLogger(__name__)
-
 from xml.etree import ElementTree
 from xml.parsers.expat import ExpatError
 
index 2e516a05048803b68014e65d92de4ac1bf284d44..ce9e538d9d5bb40f81511a9fbc862b2048748c08 100644 (file)
@@ -5,8 +5,6 @@ This contribution adds support for LiveJournal OpenID service in the form
 username.livejournal.com. Username is retrieved from the identity url.
 """
 import urlparse
-import logging
-logger = logging.getLogger(__name__)
 
 from social_auth.backends import OpenIDBackend, OpenIdAuth, USERNAME
 
index 7ad40541fbf02aa7a6e87ff0a3a3650d2691b3d0..c7ed4d2a424e7006a0222f7137138b99c8c81bab 100644 (file)
@@ -11,8 +11,6 @@ OAuth settings ORKUT_CONSUMER_KEY and ORKUT_CONSUMER_SECRET are needed
 to enable this service support.
 """
 import urllib
-import logging
-logger = logging.getLogger(__name__)
 
 from django.utils import simplejson
 
index 57e30cfeaa9ad0da529a6365a0afb0457a24a9c1..5fe4d36de75af3c296d5cf2915672c93a7a079f0 100644 (file)
@@ -11,10 +11,6 @@ setting, it must be a list of values to request.
 By default account id and token expiration time are stored in extra_data
 field, check OAuthBackend class for details on how to extend it.
 """
-import logging
-logger = logging.getLogger(__name__)
-
-
 import cgi
 from urllib import urlencode
 from urllib2 import urlopen
@@ -23,7 +19,7 @@ from django.utils import simplejson
 from django.contrib.auth import authenticate
 
 from social_auth.backends import BaseOAuth2, OAuthBackend, USERNAME
-from social_auth.utils import sanitize_log_data, setting
+from social_auth.utils import sanitize_log_data, setting, log
 
 
 # Facebook configuration
@@ -67,13 +63,14 @@ class FacebookAuth(BaseOAuth2):
 
         try:
             data = simplejson.load(urlopen(url))
-            logger.debug('Found user data for token %s',
-                         sanitize_log_data(access_token),
-                         extra=dict(data=data))
         except ValueError:
             extra = {'access_token': sanitize_log_data(access_token)}
-            logger.error('Could not load user data from Facebook.',
-                         exc_info=True, extra=extra)
+            log('error', 'Could not load user data from Facebook.',
+                exc_info=True, extra=extra)
+        else:
+            log('debug', 'Found user data for token %s',
+                sanitize_log_data(access_token),
+                extra=dict(data=data))
         return data
 
     def auth_complete(self, *args, **kwargs):
index 6a94cc0e574f40b0000d96d5c2188f3828e0e90c..88896abc89f4a099bfda5e3466fe19c38ec42a73 100644 (file)
@@ -13,9 +13,6 @@ APIs console https://code.google.com/apis/console/ Identity option.
 
 OpenID also works straightforward, it doesn't need further configurations.
 """
-import logging
-logger = logging.getLogger(__name__)
-
 from urllib import urlencode
 from urllib2 import Request, urlopen
 
index 759fe792b33a2254b6eac2e62b3afbcf85b90058..f71f349df5f065b2351b27426bf42ee0412c2f29 100644 (file)
@@ -11,9 +11,6 @@ User screen name is used to generate username.
 By default account id is stored in extra_data field, check OAuthBackend
 class for details on how to extend it.
 """
-import logging
-logger = logging.getLogger(__name__)
-
 from django.utils import simplejson
 
 from social_auth.backends import ConsumerBasedOAuth, OAuthBackend, USERNAME
index e17577e432d8f3c3430c39191bc00dcd64bea64f..e9362f4c8f293bc451e91ea364f0f3936fa66331 100644 (file)
@@ -3,9 +3,6 @@ Yahoo OpenID support
 
 No extra configurations are needed to make this work.
 """
-import logging
-logger = logging.getLogger(__name__)
-
 from social_auth.backends import OpenIDBackend, OpenIdAuth
 
 
index ec5c09e92d543cee243e9dd37af6570766b6c0fc..403386720e8ed801aabb36cce689455b64e262dc 100644 (file)
@@ -1,4 +1,5 @@
 import urlparse
+import logging
 from collections import defaultdict
 
 from django.conf import settings
@@ -85,6 +86,21 @@ def setting(name, default=None):
     return getattr(settings, name, default)
 
 
+logger = None
+if not logger:
+    logging.basicConfig()
+    logger = logging.getLogger('SocialAuth')
+    logger.setLevel(logging.DEBUG)
+
+
+def log(level, *args, **kwargs):
+    """Small wrapper around logger functions."""
+    { 'debug': logger.debug,
+      'error': logger.error,
+      'exception': logger.exception,
+      'warn': logger.warn }[level](*args, **kwargs)
+
+
 if __name__ == '__main__':
     import doctest
     doctest.testmod()
index 1dc36f01c8dc370895d06cbdd9fe7123f47bf80a..29774a4fe3bdd163839869af2956d8d2cd716c9b 100644 (file)
@@ -5,9 +5,6 @@ Notes:
       on third party providers that (if using POST) won't be sending crfs
       token back.
 """
-import logging
-logger = logging.getLogger(__name__)
-
 from functools import wraps
 
 from django.http import HttpResponseRedirect, HttpResponse, \
@@ -19,7 +16,7 @@ from django.contrib import messages
 from django.views.decorators.csrf import csrf_exempt
 
 from social_auth.backends import get_backend
-from social_auth.utils import sanitize_redirect, setting
+from social_auth.utils import sanitize_redirect, setting, log
 
 
 DEFAULT_REDIRECT = setting('SOCIAL_AUTH_LOGIN_REDIRECT_URL') or \
@@ -53,14 +50,14 @@ def dsa_view(redirect_name=None):
                     raise
                 backend_name = backend.AUTH_BACKEND.name
 
-                logger.error(unicode(e), exc_info=True,
-                             extra=dict(request=request))
+                log('error', unicode(e), exc_info=True,
+                    extra=dict(request=request))
 
                 if 'django.contrib.messages' in setting('INSTALLED_APPS'):
                     from django.contrib.messages.api import error
                     error(request, unicode(e), extra_tags=backend_name)
                 else:
-                    logger.warn('Messages framework not in place, some '+
+                    log('warn', 'Messages framework not in place, some '+
                                 'errors have not been shown to the user.')
 
                 url = setting('SOCIAL_AUTH_BACKEND_ERROR_URL', LOGIN_ERROR_URL)