Я записываю некоторые символы Unicode в файл, используя «logging» в Python 3. Код работает в терминале, но не работает с UnicodeEncodeError в PyCharm.
Я загружаю свою конфигурацию ведения журнала, используя logging.config.fileConfig
.В конфигурации я указываю обработчик файла с encoding = utf-8
.Вход в консоль работает нормально.
Я использую PyCharm 2019.1.1 (Community Edition).Я не думаю, что я изменил какую-либо соответствующую настройку, но когда я запустил тот же код в PyCharm на другом компьютере, ошибка была не воспроизведена.Поэтому я подозреваю, что проблема связана с настройкой PyCharm.
Вот минимальный пример:
import logging
from logging.config import fileConfig
# ok
print('1. café')
# ok
logging.error('2. café')
# UnicodeEncodeError
fileConfig('logcfg.ini')
logging.error('3. café')
Содержимое файла logcfg.ini (в том же каталоге) следующее:
[loggers]
keys = root
[handlers]
keys = file_handler
[formatters]
keys = formatter
[logger_root]
level = INFO
handlers = file_handler
[handler_file_handler]
class = logging.handlers.RotatingFileHandler
formatter = formatter
args = ('/tmp/test.log',)
encoding = utf-8
[formatter_formatter]
format = %(levelname)s: %(message)s
Я ожидаю увидеть первые два сообщения журнала в консоли и третье сообщение в файле журнала.Первые два оператора регистрации работали нормально, но третий не удался.Вот полный вывод консоли в PyCharm:
1. café
ERROR:root:2. café
--- Logging error ---
Traceback (most recent call last):
File "/anaconda3/lib/python3.6/logging/__init__.py", line 996, in emit
stream.write(msg)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 13: ordinal not in range(128)
Call stack:
File "/Users/klkh/test.py", line 12, in <module>
logging.error('3. café')
Message: '3. café'
Arguments: ()