Python logger创建重复条目,但不显示消息
我在程序中设置了一个简单的记录器Python logger创建重复条目,但不显示消息,python,logging,Python,Logging,我在程序中设置了一个简单的记录器 if __name__ == "__main__": # Logger setup logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) formatter = logging.Formatter('%(levelname)s:%(name)s:%(message)s') file_handler= logging.FileHandle
if __name__ == "__main__":
# Logger setup
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(levelname)s:%(name)s:%(message)s')
file_handler= logging.FileHandler('debug.log')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
<some code to call other methods>
logger.removeHandler(file_handler)
del logger, file_handler
但是,当我检查debug.log文件时,它有如下重复条目:
*
信息:main:信息:main:
信息:main: 信息:main:**************************************************************** 信息:main:
信息:main:
信息:main:
信息:main:开始测试 * 我已尝试设置logger.propagate=True/False,但没有帮助。谁能帮我了解一下这里发生了什么
编辑:所有其他功能与mainHi位于同一文件中。您是将记录器传递给函数还是函数再次获取记录器?另外,我可以看到,在带有
******
和开始测试的两条消息之间,写了很多空行。正在并发调用函数?我没有将记录器作为参数传递给函数。函数逐个调用。函数必须在其作用域中包含记录器,否则使用记录器的唯一方法是在函数内部使用getLogger
再次获取记录器。在main
中调用的函数是否在同一模块中定义?也许你可以编辑这个问题,并添加一些信息来显示函数是如何工作的。编辑这个问题。是,所有其他函数都与main位于同一文件中。即使我不将记录器传递给被调用的函数,它们也不会从全局范围中获取它吗?嗨。您是将记录器传递给函数还是函数再次获取记录器?另外,我可以看到,在带有******
和开始测试的两条消息之间,写了很多空行。正在并发调用函数?我没有将记录器作为参数传递给函数。函数逐个调用。函数必须在其作用域中包含记录器,否则使用记录器的唯一方法是在函数内部使用getLogger
再次获取记录器。在main
中调用的函数是否在同一模块中定义?也许你可以编辑这个问题,并添加一些信息来显示函数是如何工作的。编辑这个问题。是,所有其他函数都与main位于同一文件中。即使我不将记录器传递给被调用的函数,它们也不会从全局范围获得它吗?
def func1(args):
logger.info("*" * 80 + "\n")
logger.info("Starting test for '{}'\n".format(args))