python 3.6 *logging modul error* UnicodeEncodeError: 'charmap' codec can't encode characters
python 3.6 *logging modul error* UnicodeEncodeError: 'charmap' codec can't encode characters
在 Windows 10 日志模块发送此错误(使用 scrapy)
# --- Logging error ---
...
# UnicodeEncodeError: 'charmap' codec can't encode characters in position 175-176: character maps to <undefined>
我读到我应该添加 encoding='utf-8'
但我没有找到如何在下面的代码中添加它。 编辑:根据the tuto 不需要。
configure_logging(install_root_handler=False) #override default log settings
logging.basicConfig(
filename='logfile.log',
format='%(levelname)s: %(message)s',
datefmt='%m-%d %H:%M',
level=logging.INFO #CRITICAL ERROR WARNING INFO DEBUG NOTSET
)
我发现了很多关于主题的问题,但主要是关于 python 2(或 )。日志教程甚至没有谈论 utf-8。 (请注意,我可以毫无问题地打印 UTF8 字符。问题仅出现在日志记录模块中)
我没有使用 Scrapy
但我 运行 遇到了与 vanilla Python 3.6 记录无法通过 [=13= 写入 UTF-8 字符的相同问题] 到文件(控制台工作正常)。
基于 this comment,我将 'utf-8'
添加到我的 FileHandler
初始化中。我正在通过 INI 文件配置日志记录,所以它看起来像这样:
[handler_file]
class = FileHandler
args = (r'log.txt', 'a', 'utf-8')
level = NOTSET
formatter = generic
要使用 logging.basicConfig()
我认为您应该能够执行以下操作:
configure_logging(install_root_handler=False) #override default log settings
logging.basicConfig(
handlers=[logging.FileHandler('logfile.log', 'w', 'utf-8')],
format='%(levelname)s: %(message)s',
datefmt='%m-%d %H:%M',
level=logging.INFO #CRITICAL ERROR WARNING INFO DEBUG NOTSET
)
在 Windows 10 日志模块发送此错误(使用 scrapy)
# --- Logging error ---
...
# UnicodeEncodeError: 'charmap' codec can't encode characters in position 175-176: character maps to <undefined>
我读到我应该添加 编辑:根据the tuto 不需要。 encoding='utf-8'
但我没有找到如何在下面的代码中添加它。
configure_logging(install_root_handler=False) #override default log settings
logging.basicConfig(
filename='logfile.log',
format='%(levelname)s: %(message)s',
datefmt='%m-%d %H:%M',
level=logging.INFO #CRITICAL ERROR WARNING INFO DEBUG NOTSET
)
我发现了很多关于主题的问题,但主要是关于 python 2(或
我没有使用 Scrapy
但我 运行 遇到了与 vanilla Python 3.6 记录无法通过 [=13= 写入 UTF-8 字符的相同问题] 到文件(控制台工作正常)。
基于 this comment,我将 'utf-8'
添加到我的 FileHandler
初始化中。我正在通过 INI 文件配置日志记录,所以它看起来像这样:
[handler_file]
class = FileHandler
args = (r'log.txt', 'a', 'utf-8')
level = NOTSET
formatter = generic
要使用 logging.basicConfig()
我认为您应该能够执行以下操作:
configure_logging(install_root_handler=False) #override default log settings
logging.basicConfig(
handlers=[logging.FileHandler('logfile.log', 'w', 'utf-8')],
format='%(levelname)s: %(message)s',
datefmt='%m-%d %H:%M',
level=logging.INFO #CRITICAL ERROR WARNING INFO DEBUG NOTSET
)