Python 3.0 写日志时出现乱码

问题描述

python 3.0启用日志, 在pycharm里打开.log文件时中文都显示乱码.

根本原因

默认日志编译用的是GBK, 而python 3.0写程序用的是UTF-8. 所以.log文件中文会出现乱码.

解决方法

在日志handle中指定编码表

def log(logging_type):
    """
    去掉打印在屏幕上的功能
    :param logging_type:
    :return:
    """
    # 传日志用例, 生成日志对象
    logger = logging.getLogger(logging_type)
    # 设置日志级别
    logger.setLevel(settings.LOG_LEVEL)

    # # 日志打印到屏幕上
    # ch = logging.StreamHandler()
    # ch.setLevel(settings.LOG_LEVEL)

    # 获取文件日志对象及日志文件
    log_file = "%slog\%s" % (settings.BASE_DIR, settings.LOG_TYPES[logging_type])
    # 默认log文件编译用GBK, 这里指定编码utf-8
    fh = logging.FileHandler(log_file, "a", encoding="UTF-8")
    fh.setLevel(settings.LOG_LEVEL)

    # 日志格式
    formatter = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s")

    # 输出格式
    # ch.setFormatter(formatter)
    fh.setFormatter(formatter)

    # 把日志打印到指定的handler
    # logger.addHandler(ch)
    logger.addHandler(fh)

    return logger
原文地址:https://www.cnblogs.com/cheese320/p/9116982.html