【发布时间】: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 的建议,您能建议我在哪里进行此更改吗?从现在开始,我开始疯狂地研究这个问题......