前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 解决日志 logging 中文乱码的问题

Python 解决日志 logging 中文乱码的问题

作者头像
为为为什么
发布2022-08-06 15:58:20
5.5K0
发布2022-08-06 15:58:20
举报
文章被收录于专栏:又见苍岚又见苍岚

Python - 使用logging模块管理日志文件 一文中介绍过python 日志模块 logging 的基础用法,该方法产生的logger会对中文乱码,本文记录解决方案。

问题原因

  • 中文乱码是因为日志写入数据的编码不支持中文
  • 需要将编码方案改为 utf-8
  • logging.basicConfig 在python 3.9 之前不支持 encoding 配置,而默认的 encodingNone
  • 导致使用 logging.basicConfig创建的logger 写入中文乱码

解决方案

  • 使用 logging.getLogger() 获取日志对象
  • 使用 FileHandler 函数确定编码方式,生成 handler
  • 将该 handler 加入到日志对象的 Handler 当中
代码语言:javascript
复制
# 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)

封装方案

  • 这里我把相关内容封装到我的代码库中,可以使用如下命令安装:
代码语言:javascript
复制
pip install mtutils

  • 使用日志会方便得多
代码语言:javascript
复制
from mtutils import log_init

logger=log_init('test.log')  # 默认级别为 INFO
logger('log info')  # 默认级别为 INFO
logger('log info', level=50)  

  • 输出日志
代码语言:javascript
复制
2022-01-05 14:45:35,804-root-INFO: log info
2022-01-05 14:45:35,805-root-CRITICAL: log info

参考资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年1月5日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题原因
  • 解决方案
  • 封装方案
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档