diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index 3606e18..a0918bf 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -136,7 +136,7 @@ class BaseHandler(object):
                     response = response.render()
 
             except http.Http404, e:
-                logger.warning('Not Found: %s' % request.path,
+                logger.warning('Not Found: %s', request.path,
                             extra={
                                 'status_code': 404,
                                 'request': request
@@ -155,7 +155,7 @@ class BaseHandler(object):
                             signals.got_request_exception.send(sender=self.__class__, request=request)
             except exceptions.PermissionDenied:
                 logger.warning(
-                    'Forbidden (Permission denied): %s' % request.path,
+                    'Forbidden (Permission denied): %s', request.path,
                     extra={
                         'status_code': 403,
                         'request': request
@@ -208,7 +208,7 @@ class BaseHandler(object):
         if settings.DEBUG_PROPAGATE_EXCEPTIONS:
             raise
 
-        logger.error('Internal Server Error: %s' % request.path,
+        logger.error('Internal Server Error: %s', request.path,
             exc_info=exc_info,
             extra={
                 'status_code': 500,
diff --git a/django/db/backends/util.py b/django/db/backends/util.py
index b0463b7..9706268 100644
--- a/django/db/backends/util.py
+++ b/django/db/backends/util.py
@@ -42,7 +42,7 @@ class CursorDebugWrapper(CursorWrapper):
                 'sql': sql,
                 'time': "%.3f" % duration,
             })
-            logger.debug('(%.3f) %s; args=%s' % (duration, sql, params),
+            logger.debug('(%.3f) %s; args=%s', duration, sql, params,
                 extra={'duration':duration, 'sql':sql, 'params':params}
             )
 
@@ -57,7 +57,7 @@ class CursorDebugWrapper(CursorWrapper):
                 'sql': '%s times: %s' % (len(param_list), sql),
                 'time': "%.3f" % duration,
             })
-            logger.debug('(%.3f) %s; args=%s' % (duration, sql, param_list),
+            logger.debug('(%.3f) %s; args=%s', duration, sql, param_list,
                 extra={'duration':duration, 'sql':sql, 'params':param_list}
             )
 
diff --git a/django/middleware/common.py b/django/middleware/common.py
index 4dd2e14..aaa094d 100644
--- a/django/middleware/common.py
+++ b/django/middleware/common.py
@@ -42,7 +42,7 @@ class CommonMiddleware(object):
         if 'HTTP_USER_AGENT' in request.META:
             for user_agent_regex in settings.DISALLOWED_USER_AGENTS:
                 if user_agent_regex.search(request.META['HTTP_USER_AGENT']):
-                    logger.warning('Forbidden (User agent): %s' % request.path,
+                    logger.warning('Forbidden (User agent): %s', request.path,
                         extra={
                             'status_code': 403,
                             'request': request
diff --git a/django/middleware/csrf.py b/django/middleware/csrf.py
index 37f92b1..856c266 100644
--- a/django/middleware/csrf.py
+++ b/django/middleware/csrf.py
@@ -134,7 +134,7 @@ class CsrfViewMiddleware(object):
                 # we can use strict Referer checking.
                 referer = request.META.get('HTTP_REFERER')
                 if referer is None:
-                    logger.warning('Forbidden (%s): %s' % (REASON_NO_REFERER, request.path),
+                    logger.warning('Forbidden (%s): %s', REASON_NO_REFERER, request.path,
                         extra={
                             'status_code': 403,
                             'request': request,
@@ -146,7 +146,7 @@ class CsrfViewMiddleware(object):
                 good_referer = 'https://%s/' % request.get_host()
                 if not same_origin(referer, good_referer):
                     reason = REASON_BAD_REFERER % (referer, good_referer)
-                    logger.warning('Forbidden (%s): %s' % (reason, request.path),
+                    logger.warning('Forbidden (%s): %s', reason, request.path,
                         extra={
                             'status_code': 403,
                             'request': request,
@@ -158,7 +158,7 @@ class CsrfViewMiddleware(object):
                 # No CSRF cookie. For POST requests, we insist on a CSRF cookie,
                 # and in this way we can avoid all CSRF attacks, including login
                 # CSRF.
-                logger.warning('Forbidden (%s): %s' % (REASON_NO_CSRF_COOKIE, request.path),
+                logger.warning('Forbidden (%s): %s', REASON_NO_CSRF_COOKIE, request.path,
                     extra={
                         'status_code': 403,
                         'request': request,
@@ -177,7 +177,7 @@ class CsrfViewMiddleware(object):
                 request_csrf_token = request.META.get('HTTP_X_CSRFTOKEN', '')
 
             if not constant_time_compare(request_csrf_token, csrf_token):
-                logger.warning('Forbidden (%s): %s' % (REASON_BAD_TOKEN, request.path),
+                logger.warning('Forbidden (%s): %s', REASON_BAD_TOKEN, request.path,
                     extra={
                         'status_code': 403,
                         'request': request,
diff --git a/django/views/decorators/http.py b/django/views/decorators/http.py
index 495a7b1..bf96371 100644
--- a/django/views/decorators/http.py
+++ b/django/views/decorators/http.py
@@ -31,7 +31,7 @@ def require_http_methods(request_method_list):
         @wraps(func, assigned=available_attrs(func))
         def inner(request, *args, **kwargs):
             if request.method not in request_method_list:
-                logger.warning('Method Not Allowed (%s): %s' % (request.method, request.path),
+                logger.warning('Method Not Allowed (%s): %s', request.method, request.path,
                     extra={
                         'status_code': 405,
                         'request': request
@@ -121,7 +121,7 @@ def condition(etag_func=None, last_modified_func=None):
                     if request.method in ("GET", "HEAD"):
                         response = HttpResponseNotModified()
                     else:
-                        logger.warning('Precondition Failed: %s' % request.path,
+                        logger.warning('Precondition Failed: %s', request.path,
                             extra={
                                 'status_code': 412,
                                 'request': request
@@ -130,7 +130,7 @@ def condition(etag_func=None, last_modified_func=None):
                         response = HttpResponse(status=412)
                 elif if_match and ((not res_etag and "*" in etags) or
                         (res_etag and res_etag not in etags)):
-                    logger.warning('Precondition Failed: %s' % request.path,
+                    logger.warning('Precondition Failed: %s', request.path,
                         extra={
                             'status_code': 412,
                             'request': request
diff --git a/django/views/generic/base.py b/django/views/generic/base.py
index ea14281..556d0eb 100644
--- a/django/views/generic/base.py
+++ b/django/views/generic/base.py
@@ -68,7 +68,7 @@ class View(object):
 
     def http_method_not_allowed(self, request, *args, **kwargs):
         allowed_methods = [m for m in self.http_method_names if hasattr(self, m)]
-        logger.warning('Method Not Allowed (%s): %s' % (request.method, request.path),
+        logger.warning('Method Not Allowed (%s): %s', request.method, request.path,
             extra={
                 'status_code': 405,
                 'request': self.request
@@ -157,7 +157,7 @@ class RedirectView(View):
             else:
                 return http.HttpResponseRedirect(url)
         else:
-            logger.warning('Gone: %s' % self.request.path,
+            logger.warning('Gone: %s', self.request.path,
                         extra={
                             'status_code': 410,
                             'request': self.request
diff --git a/django/views/generic/simple.py b/django/views/generic/simple.py
index c3cf407..110932a 100644
--- a/django/views/generic/simple.py
+++ b/django/views/generic/simple.py
@@ -60,7 +60,7 @@ def redirect_to(request, url, permanent=True, query_string=False, **kwargs):
         klass = permanent and HttpResponsePermanentRedirect or HttpResponseRedirect
         return klass(url)
     else:
-        logger.warning('Gone: %s' % request.path,
+        logger.warning('Gone: %s', request.path,
                     extra={
                         'status_code': 410,
                         'request': request
diff --git a/tests/regressiontests/views/views.py b/tests/regressiontests/views/views.py
index f2b4e79..1d17e6e 100644
--- a/tests/regressiontests/views/views.py
+++ b/tests/regressiontests/views/views.py
@@ -149,7 +149,7 @@ def send_log(request, exc_info):
         ][0]
     orig_filters = admin_email_handler.filters
     admin_email_handler.filters = []
-    logger.error('Internal Server Error: %s' % request.path,
+    logger.error('Internal Server Error: %s', request.path,
         exc_info=exc_info,
         extra={
             'status_code': 500,
