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) *  |
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) *  |
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) *  |
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)  |
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) *  |
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) *  |
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 ... |
|
|