调用 logging.getLogger 函数,UnicodeDecodeError: 'gbk' codec can't decode byte 0x86 in position : illegal multibyte sequence

这个错误是因为logging.getLogger()函数在解析日志文件时遇到了非GBK编码的字符造成的。为了解决这个问题,你可以通过在代码中指定正确的编码方式来处理日志文件。

你可以尝试以下解决方法:

  1. 在调用logging.getLogger()函数之前,设置Python的默认编码方式为UTF-8:

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    

    这将把Python默认编码方式设置为UTF-8,从而避免了非GBK编码字符的解码错误。

  2. 如果你已经知道日志文件的编码方式,可以在代码中指定正确的编码方式来读取日志文件:

    import codecs
    
    logger = logging.getLogger()
    handler = logging.FileHandler(filename)
    handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
    handler.encoding = 'utf-8'  # 替换为正确的编码方式
    logger.addHandler(handler)
    

    通过将handler.encoding设置为正确的编码方式,可以确保正确读取日志文件中的字符。

如果以上方法都无效,你可以尝试使用chardet库来自动检测日志文件的编码方式,并在代码中指定正确的编码方式来读取日志文件,就像上面提到的方法一样。

希望这些方法能帮助到你!如果你还有其他问题,请随时提问。