【问题标题】:Duplicate Logs are generated while using Pytest Parametrize fixture in Python 3.7 [duplicate]在 Python 3.7 中使用 Pytest 参数化夹具时生成重复日志 [重复]
【发布时间】:2020-07-06 20:46:49
【问题描述】:

我在 Pytest Parametrize 夹具中的每次迭代都得到重复的日志。

示例文件 -

input1 = 1
input2 = 2
input3 = 3


@pytest.mark.parametrize("input",[(input1),(input2),(input3)])
def test_numbers(input):
    file_name = inspect.stack()[0][3]
    log = customLogger(file_name=file_name)
    log.info(input)

记录器代码 -

def customLogger(file_name,log_level=logging.INFO):
    '''
    Important Logging Information
    CRITICAL = 50
    FATAL = CRITICAL
    ERROR = 40
    WARNING = 30
    WARN = WARNING
    INFO = 20
    DEBUG = 10
    NOTSET = 0
    '''
    # Gets the name of the class / method from where this method is called
    logger_name = inspect.stack()[1][3]
    logger = logging.getLogger(logger_name)
    # By default, log all messages
    logger.setLevel(logging.DEBUG) # dont change this setting

    file_handler = logging.FileHandler("../logs/"+file_name +".log", mode='a')
    file_handler.setLevel(log_level)

    formatter = logging.Formatter('%(asctime)s - %(funcName)s - %(levelname)s: %(message)s',
                                  datefmt='%m/%d/%Y %I:%M:%S %p')
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)

    return logger

我在我的日志文件中收到这样的响应 -

07/07/2020 02:01:52 AM - test_number - INFO: 1
07/07/2020 02:01:52 AM - test_number - INFO: 2
07/07/2020 02:01:52 AM - test_number - INFO: 2
07/07/2020 02:01:52 AM - test_number - INFO: 3
07/07/2020 02:01:52 AM - test_number - INFO: 3
07/07/2020 02:01:52 AM - test_number - INFO: 3

我想解决这个问题,我正在考虑编写一个日志清理器方法来删除日志中的重复项。如果我在这里遗漏了什么,请告诉我?

【问题讨论】:

  • 每次调用customLogger 时,您都会创建并添加一个新的日志处理程序,该处理程序也会记录该行,从而增加日志。确保只创建一个处理程序或一个自定义记录器。
  • 感谢@MrBeanBremen 的建议,您能建议我在哪里进行此更改吗?从现在开始,我开始疯狂地研究这个问题......

标签: python logging pytest


【解决方案1】:

每次调用 customLogger 时,都会创建并添加一个新的日志处理程序,该处理程序也会记录该行,从而增加日志。

有几种可能性可以确保,最简单的可能是在添加新的处理程序之前清除处理程序:

... 
file_handler.setFormatter(formatter)
logger.handlers = []
logger.addHandler(file_handler)

【讨论】:

  • 工作就像一个魅力!非常感谢,好心的先生!! @MrBeanBremen
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
相关资源
最近更新 更多