跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python logging FileHandler 写 emoji 报错
未分類
11 3 月 2021

Python logging FileHandler 写 emoji 报错

Python logging FileHandler 写 emoji 报错

資深大佬 : chenqh 4

代码

import logging from logging import config  LOGGING_CONFIG = {         "version": 1,         "formatters": {             "default": {                 'format': '%(asctime)19.19s %(levelname)1.1s %(message)s',             },             "file": {                 'format': '%(asctime)19.19s %(filename)s %(lineno)s %(levelname)1.1s %(message)s',             },             "plain": {                 "format": "%(message)s",             },         },         "handlers": {             "console": {                 "class": "logging.StreamHandler",                 "level": "INFO",                 "formatter": "default",             },              "file": {                 "class": "logging.FileHandler",                 "level": 20,                 "filename": "./log.txt",                 "formatter": "default",             },             "rotate_file": {                 "class": "logging.handlers.RotatingFileHandler",                 "level": 20,                 "filename": "./log.txt",                 "formatter": "default",                 "maxBytes": 52428800,                 "backupCount": 7,             }         },         "loggers": {              "tmp": {                 "handlers": ["console", "rotate_file"],                 "level": "INFO",                 "propagate": False,             },          },         "disable_existing_loggers": True,     }  config.dictConfig(LOGGING_CONFIG) logger = logging.getLogger("tmp")   logger.info("吃ud83dudc3a")   

报错信息

2021-02-28 22:35:55 I 吃ud83dudc3a --- Logging error --- Traceback (most recent call last):   File "/home/vagrant/.pyenv/versions/3.6.9/lib/python3.6/logging/__init__.py", line 996, in emit     stream.write(msg) UnicodeEncodeError: 'utf-8' codec can't encode characters in position 23-24: surrogates not allowed Call stack:   File "/home/vagrant/code/xxx/tmp.py", line 55, in <module>     logger.info("吃ud83dudc3a") Message: '吃ud83dudc3a' Arguments: () 

这种问题怎么 fix 呀?

大佬有話說 (8)

  • 資深大佬 : Sunyanzi

    这难道不是只要 encode 一下就好了吗 … 最后一行改成下面样子 …

    logger.info(“吃ud83dudc3a”.encode(‘unicode-escape’))

  • 資深大佬 : lxy42

    “`
    In [38]: print(‘U0001f43a’)

  • 主 資深大佬 : chenqh

    @Sunyanzi 虽然你这个样子不会报错,但是日志变成这个样子了

    “`
    2021-03-01 00:05:07 I b’\u5403\ud83d\udc3a’
    “`

    日志都不能肉眼识别了,那么日志的意义就没有了呀

  • 主 資深大佬 : chenqh

    @lxy42 只是 streamHandler 也不会报错的,关键是 FileHandler 导致报错了

  • 資深大佬 : Sunyanzi

    @chenqh 只是需要保中文的肉眼识别 ..? 那换个写法用 rper 就好 …

    参数改成 (“%r” % “吃ud83dudc3a”) …

  • 資深大佬 : Sylv

    ud83dudc3a 是

  • 資深大佬 : Sylv

    https://www.compart.com/en/unicode/U+1F43A

  • 資深大佬 : v2exblog

    @Sylv
    @Sunyanzi 好牛啊,我学到了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具