J. *_*oes 9 logging encoding error-logging character-encoding python-3.x
在Windows 10上,日志记录模块发送此错误(使用scrapy)
# --- Logging error ---
...
# UnicodeEncodeError: 'charmap' codec can't encode characters in position 175-176: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
我已经读过我应该添加, 编辑:根据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
)
Run Code Online (Sandbox Code Playgroud)
我发现了很多关于这些主题的问题,但主要是关于python 2(或者与日志记录模块无关).日志教程甚至没有谈论utf-8.(请注意,我可以毫无问题地打印UTF8字符.问题只发生在记录模块上)
sms*_*rcy 12
我没有使用Scrapy但我遇到了同样的问题,因为vanilla Python 3.6无法将UTF-8字符写入logging文件(控制台工作得很好).
根据这个评论我添加'utf-8'到我的FileHandler初始化.我正在通过INI文件配置日志记录,所以它看起来像这样:
[handler_file]
class = FileHandler
args = (r'log.txt', 'a', 'utf-8')
level = NOTSET
formatter = generic
Run Code Online (Sandbox Code Playgroud)
使用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
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2294 次 |
| 最近记录: |