在Python - 使用logging模块管理日志文件 一文中介绍过python 日志模块 logging 的基础用法,该方法产生的logger会对中文乱码,本文记录解决方案。
logging.basicConfig
在python 3.9 之前不支持 encoding 配置,而默认的 encoding
为 None
logging.basicConfig
创建的logger 写入中文乱码logging.getLogger()
获取日志对象FileHandler
函数确定编码方式,生成 handler# create logger obj
logger = logging.getLogger()
# set log level
logger.setLevel(level)
# file handler
handler = logging.FileHandler(log_file_path, mode=open_type, encoding='utf-8')
handler.setFormatter(logging.Formatter("%(asctime)s-%(name)s-%(levelname)s: %(message)s"))
logger.addHandler(handler)
pip install mtutils
from mtutils import log_init
logger=log_init('test.log') # 默认级别为 INFO
logger('log info') # 默认级别为 INFO
logger('log info', level=50)
2022-01-05 14:45:35,804-root-INFO: log info
2022-01-05 14:45:35,805-root-CRITICAL: log info