Issue 25664: Logging cannot handle Unicode logger names (original) (raw)

Created on 2015-11-19 05:36 by zephor, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (9)
msg254881 - (view) Author: Zephor Wu (zephor) Date: 2015-11-19 05:36
# coding=utf-8 import logging logger = logging.getLogger(u'测试') logger.error(u'测试') # these code will get an unexpected error # because getLogger encode the unicode to utf-8 while _log don't # see line 474 in logging/__init__.py # my suggestion is to keep the encoding in logging same with python2 with unicode
msg255298 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2015-11-24 22:49
I cannot reproduce, see below. Which exact version of Python are you using, and on what platform, and with what locale? $ more logtest9.py # coding=utf-8 import logging logger = logging.getLogger(u'测试') logger.error(u'测试') $ python2.7 logtest9.py No handlers could be found for logger "测试"
msg255317 - (view) Author: Zephor Wu (zephor) Date: 2015-11-25 03:15
sorry, i forgot this: logging.basicConfig(format='%(name)s %(message)s') the error raised at the processing of the format while the name is 'utf-8' encoded and the message is an unicode
msg255319 - (view) Author: Zephor Wu (zephor) Date: 2015-11-25 03:28
here is the case, sorry again for just typing it before and not testing it myself :) # coding=utf-8 import logging logging.basicConfig(format='%(name)s %(message)s') logger = logging.getLogger(u'测试') logger.error(u'测试') btw, i'm using python2.7.10, mac osx 10.11, but i think this can effect all python2
msg255323 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015-11-25 07:52
$ cat x.py # coding=utf-8 import logging logging.basicConfig(format='%(name)s %(message)s') logger = logging.getLogger(u'测试') logger.error(u'测试') $ python2.7 x.py Traceback (most recent call last): File "/usr/lib64/python2.7/logging/__init__.py", line 859, in emit msg = self.format(record) File "/usr/lib64/python2.7/logging/__init__.py", line 732, in format return fmt.format(record) File "/usr/lib64/python2.7/logging/__init__.py", line 474, in format s = self._fmt % record.__dict__ UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128) Logged from file x.py, line 8
msg255855 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2015-12-04 10:37
The problem is that logger names which are Unicode are not handled correctly, leading to the error.
msg257027 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-12-26 12:22
New changeset 512a628c683e by Vinay Sajip in branch '2.7': Closes #25664: handled logger names in Unicode. https://hg.python.org/cpython/rev/512a628c683e
msg257036 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015-12-26 15:01
> New changeset 512a628c683e by Vinay Sajip in branch '2.7': > Closes #25664: handled logger names in Unicode. > https://hg.python.org/cpython/rev/512a628c683e .format() doesn't look to me like the best place to encode the name. Why not doing that in record constructor? I don't want to add one try/except for each record field :-/
msg257040 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2015-12-26 16:07
> Why not doing that in record constructor? You're right, that's probably better. Perhaps I was too hasty ...
History
Date User Action Args
2022-04-11 14:58:24 admin set github: 69850
2015-12-26 16:07:43 vinay.sajip set messages: +
2015-12-26 15:01:24 vstinner set messages: +
2015-12-26 12:22:54 python-dev set status: open -> closednosy: + python-devmessages: + resolution: fixedstage: resolved
2015-12-22 08:24:12 josephgordon set nosy: + josephgordon
2015-12-04 10:37:56 vinay.sajip set assignee: vinay.sajipmessages: + title: Unexpected UnicodeDecodeError in logging module -> Logging cannot handle Unicode logger names
2015-11-25 07:52:27 vstinner set nosy: + vstinnermessages: +
2015-11-25 03:28:25 zephor set messages: +
2015-11-25 03:15:16 zephor set messages: +
2015-11-24 22:49:06 vinay.sajip set messages: +
2015-11-19 10:35:04 serhiy.storchaka set nosy: + vinay.sajip
2015-11-19 05:39:03 zephor set type: behavior
2015-11-19 05:36:22 zephor create