美文网首页
python四种方法解决日志重复打印

python四种方法解决日志重复打印

作者: GRUNMI | 来源:发表于2019-10-21 14:41 被阅读0次

2018-09-09 13:15:45,758 - INFO---- ------------------------------------------------------------------
2018-09-09 13:15:45,758 - INFO---- ------------------------------------------------------------------
2018-09-09 13:15:45,758 - INFO---- 当前文件:F:\pythonProject\apiPage\common\isExistTestCase.py
2018-09-09 13:15:45,758 - INFO---- 当前文件:F:\pythonProject\apiPage\common\isExistTestCase.py
2018-09-09 13:15:45,758 - INFO---- 打开F:\pythonProject\apiPage\case\test.xlsx文件
2018-09-09 13:15:45,758 - INFO---- 打开F:\pythonProject\apiPage\case\test.xlsx文件
2018-09-09 13:16:02,559 - INFO---- 当前文件F:/pythonProject/apiPage/common/saveRequestData.py
2018-09-09 13:16:02,559 - INFO---- 当前文件:F:/pythonProject/apiPage/common/saveRequestData.py
2018-09-09 13:16:02,559 - INFO---- 运行调用的isExistCase方法
2018-09-09 13:16:02,559 - INFO---- 运行调用的isExistCase方法

logger里已经有了第一次你添加的handler,第二次调用又添加了一个handler,
所以,这个logger里有了两个同样的handler,以此类推,调用几次就会有几个handler,因此会重复打印日志
# coding:utf-8
__author__ = 'GRUNMI'

import logging
import os
import time
# 记录日志
logPath = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'logs')
# 判断是否存在文件夹,不存在则创建
if not os.path.exists(logPath):
    os.mkdir(logPath)
class Log():
    def __init__(self):
    self.logger = logging.getLogger()
    
    # 第一种:每次运行之前,移除handler
    # self.logger.removeHandler(handler)

    # 第二种:用pop方法把logger.handlers列表中的handler移除
    # logger.handlers.pop()


    # 第三种:直接为handlers列表赋空值
    # logger.handler = []

    #  第四种:进行判断,如果logger.handlers列表为空,则添加,否则,直接去写日志
    # 进行判断,如果logger.handlers列表为空,则添加,否则,直接去写日志
   #  if not self.logger.handlers:
  
    if not self.logger.handlers:
        self.logger.setLevel(logging.DEBUG)
        handler = logging.StreamHandler()
        formatter = logging.Formatter('%(asctime)s - %(levelname)s----  %(message)s')
        handler.setFormatter(formatter)
        # 打印在屏幕上
        self.logger.addHandler(handler)
        self.logFileName = os.path.join(logPath, '%s.log' % time.strftime('%Y_%m_%d'))
        fh = logging.FileHandler(self.logFileName, mode='a', encoding='utf-8')
        fh.setFormatter(formatter)
        # 记录在logs文件夹的logFileName文件中
        self.logger.addHandler(fh)
        

      def get_logger(self):
         # print(self.logger.handlers)
             return self.logger

   if __name__ == '__main__':
       mylogger = Log().get_logger()
       mylogger.debug("test debug")
       mylogger.info("test info")
       mylogger.error('haha')
       mylogger.error('hahha')`

相关文章

  • python四种方法解决日志重复打印

    2018-09-09 13:15:45,758 - INFO---- ----------------------...

  • grpc python expected a string or

    首先python添加打印日志 import logging logging.basicConfig() 解决:No...

  • Python日志打印重复问题

    今天调试用例的脚本去调用封装好的日志模块(算是补充前面的写Python日志logging模块的使用的一个小bug吧...

  • 日志打印 CONDITIONS EVALUATION REPOR

    日志打印过多信息 原因 配置文件中配置了level属性 解决方法

  • iOS Log打印

    简述 iOS调试中打印日志是一种比较常见的手段,一般都是使用系统的打印日志的方法NSLog,但是这种打印日志的方法...

  • python 的日志模块logging

    python 的日志logging模块学习 1.简单的将日志打印到屏幕 屏幕上打印: 默认情况下,logging将...

  • 2019-05-28

    Python中的日志模块 logging使用 参数:作用%(levelno)s:打印日志级别的数值%(leveln...

  • Python中的logging使用

    Python中自带了logging库,可以提供打印日志、记录日志文件、根据时间日志滚动、根据文件大小日志滚动、过期...

  • springAop

    springAop:面向切面的编程 应用场景:权限控制、事物管理、日志打印等等,就是在不同的方法中重复用到相同的代...

  • apollo配置日志不生效(springboot项目中)

    问题原因: 在apollo配置文件中配置了日志等级日志打印后,启动项目发现日志没有把对应等级log打印出来; 解决...

网友评论

      本文标题:python四种方法解决日志重复打印

      本文链接:https://www.haomeiwen.com/subject/fttdgftx.html