zoukankan      html  css  js  c++  java
  • 【python】logging日志模块写入中文编码错误解决办法

     一、问题:

      使用python的logging模块记录日志,有时会遇到中文编码问题错误。

    二、解决办法:

      在logging.FileHandler(path) 中添加指定编码方式 encoding='utf-8' 即可,logging.FileHandler(path, encoding='utf-8') 。

      示例日志模块代码:

    import logging,sys
    
    filelog = True
    path = r'log.txt'
    
    logger = logging.getLogger('log')
    logger.setLevel(logging.DEBUG)
    
    # 调用模块时,如果错误引用,比如多次调用,每次会添加Handler,造成重复日志,这边每次都移除掉所有的handler,后面在重新添加,可以解决这类问题
    while logger.hasHandlers():
        for i in logger.handlers:
            logger.removeHandler(i)
    
    # file log
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
    if filelog:
        fh = logging.FileHandler(path,encoding='utf-8')
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(formatter)
        logger.addHandler(fh)
    
    # console log
    formatter = logging.Formatter('%(message)s')
    ch = logging.StreamHandler(sys.stdout)
    ch.setLevel(logging.DEBUG)
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    
    if __name__ == '__main__':
        logger.info("这是一个测试")
  • 相关阅读:
    OAuth2.0 基础概述
    Ubuntu安装Gogs服务
    ASP.NET WebAPI 生成帮助文档与使用Swagger服务测试
    ASP.NET MVC 中的路由
    升级Ghost
    搭建Golang开发环境
    TDD并不是看上去的那么美
    .NET Framework 源码查看与调试
    在 ASP.NET MVC 中使用异步控制器
    SpringMVC+FreeMarker+Mybatis 整合
  • 原文地址:https://www.cnblogs.com/TurboWay/p/9304024.html
Copyright © 2011-2022 走看看