=== modified file 'twisted/python/log.py'
--- twisted/python/log.py	2011-08-14 00:01:36 +0000
+++ twisted/python/log.py	2012-05-31 10:53:46 +0000
@@ -529,7 +530,9 @@
         text = textFromEventDict(eventDict)
         if text is None:
             return
-        self.logger.log(level, text)
+        # 'message' key is not allowed in the extra dict
+        del eventDict['message']
+        self.logger.log(level, text, extra=eventDict)
 
     def start(self):
         """

=== modified file 'twisted/test/test_log.py'
--- twisted/test/test_log.py	2012-04-08 13:17:05 +0000
+++ twisted/test/test_log.py	2012-05-31 11:49:58 +0000
@@ -607,6 +607,15 @@
         self.lp.msg(message='', isError=False)
         self.assertEqual(self.out.getvalue(), '')
 
+    def test_extraEventDict(self):
+        """
+        Verify that extra eventDict data is passed to stdlib logging as extras.
+        """
+        self.hdlr.setFormatter(logging.Formatter(fmt="%(message)s %(foo)s"))
+        self.lp.msg("Hello World", foo="bar")
+
+        self.assertIn("Hello World", self.out.getvalue())
+        self.assertIn("bar", self.out.getvalue())
 
 class PythonLoggingIntegrationTestCase(unittest.TestCase):
     """
