Index: django/core/servers/basehttp.py
===================================================================
--- django/core/servers/basehttp.py	(revision 13353)
+++ django/core/servers/basehttp.py	(working copy)
@@ -14,6 +14,7 @@
 import stat
 import sys
 import urllib
+import logging
 
 from django.core.management.color import color_style
 from django.utils.http import http_date
@@ -26,6 +27,17 @@
 sys_version = "Python/" + sys.version.split()[0]
 software_version = server_version + ' ' + sys_version
 
+st_handler = logging.StreamHandler(sys.stderr)
+formatter = logging.Formatter("[%(asctime)s] - %(levelname)s - %(message)s")
+st_handler.setFormatter(formatter)
+
+log = logging.getLogger("WSGIServer")
+log.addHandler(st_handler)
+log.setLevel(logging.DEBUG)
+admin_log = logging.getLogger("admin")
+log.addHandler(st_handler)
+log.setLevel(logging.DEBUG)
+
 class WSGIServerException(Exception):
     pass
 
@@ -485,7 +497,8 @@
                 exc_info[0], exc_info[1], exc_info[2],
                 self.traceback_limit, stderr
             )
-            stderr.flush()
+
+            log.warn(stderr.getvalue())
         finally:
             exc_info = None
 
@@ -517,7 +530,7 @@
 
     def get_stderr(self):
         return self.stderr
-
+        
     def add_cgi_vars(self):
         self.environ.update(self.base_env)
 
@@ -558,7 +571,7 @@
         # We set self.path to avoid crashes in log_message() on unsupported
         # requests (like "OPTIONS").
         self.path = ''
-        self.style = color_style()
+        #self.style = color_style()
         BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
 
     def get_environ(self):
@@ -595,44 +608,47 @@
         return env
 
     def get_stderr(self):
-        return sys.stderr
+        from cStringIO import StringIO
+        fake_stderr = StringIO()
+        return fake_stderr
 
     def handle(self):
         """Handle a single HTTP request"""
         self.raw_requestline = self.rfile.readline()
         if not self.parse_request(): # An error code has been sent, just exit
             return
-        handler = ServerHandler(self.rfile, self.wfile, self.get_stderr(), self.get_environ())
+        log_buffer = self.get_stderr()
+        handler = ServerHandler(self.rfile, self.wfile, log_buffer, self.get_environ())
         handler.request_handler = self      # backpointer for logging
         handler.run(self.server.get_app())
-
+        log_buffer.close()
+        
     def log_message(self, format, *args):
-        # Don't bother logging requests for admin images or the favicon.
-        if self.path.startswith(self.admin_media_prefix) or self.path == '/favicon.ico':
-            return
+        # Delay the decision of logging admin to logging config.
+        if self.path.startswith(self.admin_media_prefix):
+            int_logger = admin_log
+        else:
+            int_logger = log
+        
+        msg =  "%s\n" % (format % args)
 
-        msg = "[%s] %s\n" % (self.log_date_time_string(), format % args)
-
-        # Utilize terminal colors, if available
         if args[1][0] == '2':
-            # Put 2XX first, since it should be the common case
-            msg = self.style.HTTP_SUCCESS(msg)
+            int_logger.info(msg)
         elif args[1][0] == '1':
-            msg = self.style.HTTP_INFO(msg)
+            int_logger.info(msg)
         elif args[1] == '304':
-            msg = self.style.HTTP_NOT_MODIFIED(msg)
+            int_logger.info(msg)
         elif args[1][0] == '3':
-            msg = self.style.HTTP_REDIRECT(msg)
+            int_logger.info(msg)
         elif args[1] == '404':
-            msg = self.style.HTTP_NOT_FOUND(msg)
+            int_logger.warn(msg)
         elif args[1][0] == '4':
-            msg = self.style.HTTP_BAD_REQUEST(msg)
+            int_logger.warn(msg)
         else:
             # Any 5XX, or any other response
-            msg = self.style.HTTP_SERVER_ERROR(msg)
-
-        sys.stderr.write(msg)
-
+            int_logger.critical(msg)
+            
+        
 class AdminMediaHandler(object):
     """
     WSGI middleware that intercepts calls to the admin media directory, as
