diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 0c6a186..995d313 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -973,6 +973,7 @@
         self.emittedNoHandlerWarning = 0
         self.loggerDict = {}
         self.loggerClass = None
+        self.logRecordClass = None
 
     def getLogger(self, name):
         """
@@ -1016,6 +1017,13 @@
                                 + klass.__name__)
         self.loggerClass = klass
 
+    def setLogRecordClass(self, cls):
+        """
+        Set the class to be used when instantiating a log record with this
+        Manager.
+        """
+        self.logRecordClass = cls
+
     def _fixupParents(self, alogger):
         """
         Ensure that there are either loggers or placeholders all the way
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index c5d8bac..ea2ea2e 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -127,7 +127,8 @@
         except AttributeError:
             # StringIO.StringIO lacks a reset() method.
             actual_lines = stream.getvalue().splitlines()
-        self.assertEquals(len(actual_lines), len(expected_values))
+        self.assertEquals(len(actual_lines), len(expected_values),
+                          '%s vs. %s' % (actual_lines, expected_values))
         for actual, expected in zip(actual_lines, expected_values):
             match = pat.search(actual)
             if not match:
@@ -1766,6 +1767,44 @@
         self.assertTrue(c2 is c3)
 
 
+class DerivedLogRecord(logging.LogRecord):
+    pass
+
+class LogRecordClassTest(BaseTest):
+
+    def setUp(self):
+        class CheckingFilter(logging.Filter):
+            def __init__(self, cls):
+                self.cls = cls
+
+            def filter(self, record):
+                t = type(record)
+                if t is not self.cls:
+                    msg = 'Unexpected LogRecord type %s, expected %s' % (t,
+                            self.cls)
+                    raise TypeError(msg)
+                return True
+
+        BaseTest.setUp(self)
+        self.filter = CheckingFilter(DerivedLogRecord)
+        self.root_logger.addFilter(self.filter)
+        self.orig_cls = logging.getLogRecordClass()
+
+    def tearDown(self):
+        self.root_logger.removeFilter(self.filter)
+        BaseTest.tearDown(self)
+        logging.setLogRecordClass(self.orig_cls)
+
+    def test_logrecord_class(self):
+        self.assertRaises(TypeError, self.root_logger.warning,
+                          self.next_message())
+        logging.setLogRecordClass(DerivedLogRecord)
+        self.root_logger.error(self.next_message())
+        self.assert_log_lines([
+           ('root', 'ERROR', '2'),
+        ])
+
+
 class QueueHandlerTest(BaseTest):
     # Do not bother with a logger name group.
     expected_log_pat = r"^[\w.]+ -> ([\w]+): ([\d]+)$"
@@ -1877,7 +1916,7 @@
                  CustomLevelsAndFiltersTest, MemoryHandlerTest,
                  ConfigFileTest, SocketHandlerTest, MemoryTest,
                  EncodingTest, WarningsTest, ConfigDictTest, ManagerTest,
-                 ChildLoggerTest, QueueHandlerTest,
+                 LogRecordClassTest, ChildLoggerTest, QueueHandlerTest,
                  RotatingFileHandlerTest,
                  #TimedRotatingFileHandlerTest
                 )
diff --git a/Misc/NEWS b/Misc/NEWS
index 066c667..1453453 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -34,6 +34,8 @@
 Library
 -------
 
+- logging: Added tests for _logRecordClass changes.
+
 - Issue #10092: Properly reset locale in calendar.Locale*Calendar classes.
 
 - logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to
