[Python-checkins] r85724 - in python/branches/py3k: Lib/logging/__init__.py Misc/NEWS

vinay.sajip python-checkins at python.org
Tue Oct 19 17:26:25 CEST 2010


Author: vinay.sajip
Date: Tue Oct 19 17:26:24 2010
New Revision: 85724

Log:
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.

Modified:
   python/branches/py3k/Lib/logging/__init__.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/logging/__init__.py
==============================================================================
--- python/branches/py3k/Lib/logging/__init__.py	(original)
+++ python/branches/py3k/Lib/logging/__init__.py	Tue Oct 19 17:26:24 2010
@@ -31,7 +31,8 @@
            'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig',
            'captureWarnings', 'critical', 'debug', 'disable', 'error',
            'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass',
-           'info', 'log', 'makeLogRecord', 'setLoggerClass', 'warn', 'warning']
+           'info', 'log', 'makeLogRecord', 'setLoggerClass', 'warn', 'warning',
+           'getLogRecordClass', 'setLogRecordClass']
 
 try:
     import codecs
@@ -316,6 +317,25 @@
             msg = msg % self.args
         return msg
 
+#
+#   Determine which class to use when instantiating log records.
+#
+_logRecordClass = LogRecord
+
+def setLogRecordClass(cls):
+    """
+    Set the class to be used when instantiating a log record.
+    """
+    global _logRecordClass
+    _logRecordClass = cls
+
+def getLogRecordClass():
+    """
+    Return the class to be used when instantiating a log record.
+    """
+
+    return _logRecordClass
+
 def makeLogRecord(dict):
     """
     Make a LogRecord whose attributes are defined by the specified dictionary,
@@ -323,7 +343,7 @@
     a socket connection (which is sent as a dictionary) into a LogRecord
     instance.
     """
-    rv = LogRecord(None, None, "", 0, "", (), None, None)
+    rv = _logRecordClass(None, None, "", 0, "", (), None, None)
     rv.__dict__.update(dict)
     return rv
 
@@ -1183,7 +1203,7 @@
         A factory method which can be overridden in subclasses to create
         specialized LogRecords.
         """
-        rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func)
+        rv = _logRecordClass(name, level, fn, lno, msg, args, exc_info, func)
         if extra is not None:
             for key in extra:
                 if (key in ["message", "asctime"]) or (key in rv.__dict__):

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Tue Oct 19 17:26:24 2010
@@ -34,6 +34,9 @@
 Library
 -------
 
+- logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to
+  increase flexibility of LogRecord creation.
+
 - Issue #5117: Case normalization was needed on ntpath.relpath(). And
   fixed root directory issue on posixpath.relpath(). (Ported working fixes
   from ntpath)


More information about the Python-checkins mailing list