Kaydet (Commit) 74f04508 authored tarafından Vinay Sajip's avatar Vinay Sajip

Issue #5768: Change to Unicode output logic and test case for same.

üst 76162e30
......@@ -753,7 +753,7 @@ class StreamHandler(Handler):
The record is then written to the stream with a trailing newline. If
exception information is present, it is formatted using
traceback.print_exception and appended to the stream. If the stream
has an 'encoding' attribute, it is used to encode the message before
has an 'encoding' attribute, it is used to determine how to do the
output to the stream.
"""
try:
......@@ -764,11 +764,11 @@ class StreamHandler(Handler):
stream.write(fs % msg)
else:
try:
if (isinstance(msg, unicode) or
getattr(stream, 'encoding', None) is None):
stream.write(fs % msg)
if (isinstance(msg, unicode) and
getattr(stream, 'encoding', None)):
stream.write(fs.decode(stream.encoding) % msg)
else:
stream.write(fs % msg.encode(stream.encoding))
stream.write(fs % msg)
except UnicodeError:
stream.write(fs % msg.encode("UTF-8"))
self.flush()
......
......@@ -894,6 +894,7 @@ class EncodingTest(BaseTest):
message = u'\u0434\u043e \u0441\u0432\u0438\u0434\u0430\u043d\u0438\u044f'
#Ensure it's written in a Cyrillic encoding
writer_class = codecs.getwriter('cp1251')
writer_class.encoding = 'cp1251'
stream = cStringIO.StringIO()
writer = writer_class(stream, 'strict')
handler = logging.StreamHandler(writer)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment