mirror of https://github.com/python/cpython.git
logging: fixed lack of use of encoding attribute specified on a stream.
This commit is contained in:
parent
f7dd75f484
commit
72ed07843a
|
@ -719,6 +719,7 @@ class StreamHandler(Handler):
|
||||||
to a stream. Note that this class does not close the stream, as
|
to a stream. Note that this class does not close the stream, as
|
||||||
sys.stdout or sys.stderr may be used.
|
sys.stdout or sys.stderr may be used.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, strm=None):
|
def __init__(self, strm=None):
|
||||||
"""
|
"""
|
||||||
Initialize the handler.
|
Initialize the handler.
|
||||||
|
@ -743,10 +744,11 @@ def emit(self, record):
|
||||||
Emit a record.
|
Emit a record.
|
||||||
|
|
||||||
If a formatter is specified, it is used to format the record.
|
If a formatter is specified, it is used to format the record.
|
||||||
The record is then written to the stream with a trailing newline
|
The record is then written to the stream with a trailing newline. If
|
||||||
[N.B. this may be removed depending on feedback]. If exception
|
exception information is present, it is formatted using
|
||||||
information is present, it is formatted using
|
traceback.print_exception and appended to the stream. If the stream
|
||||||
traceback.print_exception and appended to the stream.
|
has an 'encoding' attribute, it is used to encode the message before
|
||||||
|
output to the stream.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
msg = self.format(record)
|
msg = self.format(record)
|
||||||
|
@ -755,7 +757,10 @@ def emit(self, record):
|
||||||
self.stream.write(fs % msg)
|
self.stream.write(fs % msg)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
self.stream.write(fs % msg)
|
if hasattr(self.stream, 'encoding'):
|
||||||
|
self.stream.write(fs % msg.encode(self.stream.encoding))
|
||||||
|
else:
|
||||||
|
self.stream.write(fs % msg)
|
||||||
except UnicodeError:
|
except UnicodeError:
|
||||||
self.stream.write(fs % msg.encode("UTF-8"))
|
self.stream.write(fs % msg.encode("UTF-8"))
|
||||||
self.flush()
|
self.flush()
|
||||||
|
|
Loading…
Reference in New Issue