PYTHON-logging-工具类-支持中文字符控制台输出和文件写入-不会导致乱码

import logging
import sys
import os
import time
from logging.handlers import RotatingFileHandler
import io

def get_logger(tag):
     # 创建一个新的输出流,并指定编码为UTF-8
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

    accPath = 'logs'
    if not os.path.exists(accPath):
        os.makedirs(accPath, 0o644)
    logger = logging.getLogger(tag)
    logger.setLevel(logging.DEBUG)
    fh = RotatingFileHandler(accPath + os.sep + tag + '.log', maxBytes=1024*1024*100, backupCount=30, encoding='utf-8')
    fh.setLevel(logging.DEBUG)
    ch = logging.StreamHandler(sys.stdout)
    ch.setLevel(logging.DEBUG)
    formatter = logging.Formatter("%(asctime)s - %(thread)d - %(levelname)s - %(message)s")
    ch.setFormatter(formatter)
    fh.setFormatter(formatter)
    logger.addHandler(ch)
    logger.addHandler(fh)
    return logger

 # 测试日志输出
gl = get_logger('test')
gl.info("中文字符测试")
 # 测试控制台输出
print("中文字符测试")
```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值