Python 的 logging 模块重复写日志问题

import logging
import os.path
import time
from common import getpathInfo

path = os.path.dirname(getpathInfo.get_path())  # 拿到绝对路径 C:\Users\testing\PycharmProjects\InterfaceFrame


class Logger(object):    
    def __init__(self, logger):
        """
        指定保存日志的文件路径,日志级别,以及调用文件
        将日志存入到指定的文件中
        :param logger:
        """
        # 创建一个logger
        self.logger = logging.getLogger(logger)
        self.logger.setLevel(logging.DEBUG)


        # 创建一个handler,用于写入日志文件
        rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
        # path = os.path.dirname(getpathInfo.get_path())  # 拿到绝对路径 C:\Users\testing\PycharmProjects\InterfaceFrame
        # print("这里拿到的路径是:", path)
        log_path = os.path.join(path, 'logs')
        log_name = os.path.join(log_path, rq + '.log')
        # 这个判断是重复写日志问题,这里进行判断,如果logger.handlers列表为空,则添加,否则,直接去写日志
        if not self.logger.handlers:
            fh = logging.FileHandler(log_name, encoding='utf-8')
            fh.setLevel(logging.INFO)

            # 再创建一个handler,用于输出到控制台
            ch = logging.StreamHandler()
            ch.setLevel(logging.INFO)

            # 定义handler的输出格式
            formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            fh.setFormatter(formatter)
            ch.setFormatter(formatter)

            # 给logger添加handler
            self.logger.addHandler(fh)
            self.logger.addHandler(ch)
            #  添加下面一句,在记录日志之后移除句柄
           # self.logger.removeHandler(ch)


    def get_log(self):
        return self.logger


if __name__ == '__main__':
    Logger("ssss").get_log().info("test01case------>>测试开始前准备")

重点在 if判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值