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)