]> granicus.if.org Git - python/commitdiff
logging: replace codecs.open with builtins.open, remove '_encoded' sort, add some...
authorFlorent Xicluna <florent.xicluna@gmail.com>
Mon, 7 Nov 2011 18:43:05 +0000 (19:43 +0100)
committerFlorent Xicluna <florent.xicluna@gmail.com>
Mon, 7 Nov 2011 18:43:05 +0000 (19:43 +0100)
Lib/logging/__init__.py
Lib/logging/config.py
Lib/logging/handlers.py
Lib/test/test_logging.py

index 988cbed61c8b987796fe6db69a5ed11fb6d69406..25acb3ffbefd638877e28397fb29b8faf02bdf1a 100644 (file)
@@ -35,11 +35,6 @@ __all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR',
            'info', 'log', 'makeLogRecord', 'setLoggerClass', 'warn', 'warning',
            'getLogRecordFactory', 'setLogRecordFactory', 'lastResort']
 
-try:
-    import codecs
-except ImportError: #pragma: no cover
-    codecs = None
-
 try:
     import threading
 except ImportError: #pragma: no cover
@@ -954,8 +949,6 @@ class FileHandler(StreamHandler):
         """
         #keep the absolute path, otherwise derived classes which use this
         #may come a cropper when the current directory changes
-        if codecs is None:  #pragma: no cover
-            encoding = None
         self.baseFilename = os.path.abspath(filename)
         self.mode = mode
         self.encoding = encoding
@@ -983,11 +976,7 @@ class FileHandler(StreamHandler):
         Open the current base file with the (original) mode and encoding.
         Return the resulting stream.
         """
-        if self.encoding is None:
-            stream = open(self.baseFilename, self.mode)
-        else:
-            stream = codecs.open(self.baseFilename, self.mode, self.encoding)
-        return stream
+        return open(self.baseFilename, self.mode, encoding=self.encoding)
 
     def emit(self, record):
         """
index e183e74f9eb3279766245dd7786da20f240891af..5ef5c913a9105a90846607b5eb5e4e532ace983a 100644 (file)
@@ -24,8 +24,8 @@ Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved.
 To use, simply 'import logging' and log away!
 """
 
-import sys, logging, logging.handlers, socket, struct, os, traceback, re
-import types, io
+import sys, logging, logging.handlers, socket, struct, traceback, re
+import io
 
 try:
     import _thread as thread
@@ -98,9 +98,6 @@ def _resolve(name):
 def _strip_spaces(alist):
     return map(lambda x: x.strip(), alist)
 
-def _encoded(s):
-    return s if isinstance(s, str) else s.encode('utf-8')
-
 def _create_formatters(cp):
     """Create and return formatters"""
     flist = cp["formatters"]["keys"]
@@ -215,7 +212,7 @@ def _install_loggers(cp, handlers, disable_existing):
     #avoid disabling child loggers of explicitly
     #named loggers. With a sorted list it is easier
     #to find the child loggers.
-    existing.sort(key=_encoded)
+    existing.sort()
     #We'll keep the list of existing loggers
     #which are children of named loggers here...
     child_loggers = []
@@ -588,7 +585,7 @@ class DictConfigurator(BaseConfigurator):
                 #avoid disabling child loggers of explicitly
                 #named loggers. With a sorted list it is easier
                 #to find the child loggers.
-                existing.sort(key=_encoded)
+                existing.sort()
                 #We'll keep the list of existing loggers
                 #which are children of named loggers here...
                 child_loggers = []
@@ -804,7 +801,6 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT):
             struct.pack(">L", n), followed by the config file.
             Uses fileConfig() to do the grunt work.
             """
-            import tempfile
             try:
                 conn = self.connection
                 chunk = conn.recv(4)
index ef17081908da55bb5e4bb77540443bc40273915c..52e18e5410f8975d5531fba30064b5048c9a2948 100644 (file)
@@ -25,6 +25,7 @@ To use, simply 'import logging.handlers' and log away!
 """
 
 import logging, socket, os, pickle, struct, time, re
+from codecs import BOM_UTF8
 from stat import ST_DEV, ST_INO, ST_MTIME
 import queue
 try:
@@ -32,11 +33,6 @@ try:
 except ImportError: #pragma: no cover
     threading = None
 
-try:
-    import codecs
-except ImportError: #pragma: no cover
-    codecs = None
-
 #
 # Some constants...
 #
@@ -60,8 +56,6 @@ class BaseRotatingHandler(logging.FileHandler):
         """
         Use the specified filename for streamed logging
         """
-        if codecs is None: #pragma: no cover
-            encoding = None
         logging.FileHandler.__init__(self, filename, mode, encoding, delay)
         self.mode = mode
         self.encoding = encoding
@@ -793,9 +787,7 @@ class SysLogHandler(logging.Handler):
         prio = prio.encode('utf-8')
         # Message is a string. Convert to bytes as required by RFC 5424
         msg = msg.encode('utf-8')
-        if codecs:
-            msg = codecs.BOM_UTF8 + msg
-        msg = prio + msg
+        msg = prio + BOM_UTF8 + msg
         try:
             if self.unixsocket:
                 try:
index ed22d91f0cade10bb33636b51e651a058b6a45a5..25ca0b85535773e521d92cbf45398df2ce08daf8 100644 (file)
@@ -49,6 +49,7 @@ import weakref
 try:
     import threading
     # The following imports are needed only for tests which
+    # require threading
     import asynchat
     import asyncore
     import errno
@@ -95,9 +96,7 @@ class BaseTest(unittest.TestCase):
         finally:
             logging._releaseLock()
 
-        # Set two unused loggers: one non-ASCII and one Unicode.
-        # This is to test correct operation when sorting existing
-        # loggers in the configuration code. See issue 8201.
+        # Set two unused loggers
         self.logger1 = logging.getLogger("\xab\xd7\xbb")
         self.logger2 = logging.getLogger("\u013f\u00d6\u0047")
 
@@ -310,8 +309,6 @@ class BuiltinLevelsTest(BaseTest):
             ('INF.BADPARENT', 'INFO', '4'),
         ])
 
-    def test_invalid_name(self):
-        self.assertRaises(TypeError, logging.getLogger, any)
 
 class BasicFilterTest(BaseTest):
 
@@ -3514,6 +3511,22 @@ class LoggerTest(BaseTest):
         self.addCleanup(setattr, self.logger.manager, 'disable', old_disable)
         self.assertFalse(self.logger.isEnabledFor(22))
 
+    def test_root_logger_aliases(self):
+        root = logging.getLogger()
+        self.assertIs(root, logging.root)
+        self.assertIs(root, logging.getLogger(None))
+        self.assertIs(root, logging.getLogger(''))
+        self.assertIs(root, logging.getLogger('foo').root)
+        self.assertIs(root, logging.getLogger('foo.bar').root)
+        self.assertIs(root, logging.getLogger('foo').parent)
+
+        self.assertIsNot(root, logging.getLogger('\0'))
+        self.assertIsNot(root, logging.getLogger('foo.bar').parent)
+
+    def test_invalid_names(self):
+        self.assertRaises(TypeError, logging.getLogger, any)
+        self.assertRaises(TypeError, logging.getLogger, b'foo')
+
 
 class BaseFileTest(BaseTest):
     "Base class for handler tests that write log files"