logging: replace codecs.open with builtins.open, remove '_encoded' sort, add some tests.

This commit is contained in:
Florent Xicluna 2011-11-07 19:43:05 +01:00
parent 1cdbf57c7c
commit 5252f9faee
4 changed files with 25 additions and 35 deletions

View file

@ -35,11 +35,6 @@
'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 @@ def __init__(self, filename, mode='a', encoding=None, delay=False):
"""
#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 @@ def _open(self):
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):
"""

View file

@ -24,8 +24,8 @@
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 @@ def configure(self):
#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 handle(self):
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)

View file

@ -25,6 +25,7 @@
"""
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 @@
except ImportError: #pragma: no cover
threading = None
try:
import codecs
except ImportError: #pragma: no cover
codecs = None
#
# Some constants...
#
@ -60,8 +56,6 @@ def __init__(self, filename, mode, encoding=None, delay=0):
"""
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 @@ def emit(self, record):
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:

View file

@ -49,6 +49,7 @@
try:
import threading
# The following imports are needed only for tests which
# require threading
import asynchat
import asyncore
import errno
@ -95,9 +96,7 @@ def setUp(self):
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 @@ def test_nested_with_virtual_parent(self):
('INF.BADPARENT', 'INFO', '4'),
])
def test_invalid_name(self):
self.assertRaises(TypeError, logging.getLogger, any)
class BasicFilterTest(BaseTest):
@ -3514,6 +3511,22 @@ def test_is_enabled_for(self):
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"