我有与下面的代码片段类似的代码,并且无法弄清楚为什么它在作为独立脚本和侦听器调用时表现不同。 当它作为 python 脚本调用时,hasHandlers() 方法按预期返回 False,因为记录器没有处理程序。 另一方面,当它用作机器人脚本的侦听器时,hasHandlers() 方法返回 True 并且不会添加处理程序。处理程序打印还显示空列表。 添加条件“if not logger.hasHandlers()”,因为没有它,在执行多个测试时会多次打印相同的条目。
def end_test(name, attrs):
set_logging()
some_stuff_logging()
def set_logging():
global logger
logger = logging.getLogger(__name__)
print(logger.handlers)
print ("Has handlers: {}".format(logger.hasHandlers()))
if not logger.hasHandlers():
logger.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s | %(module)s | %(levelname)s | %(message)s")
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
def some_stuff_logging():
/* use logger to print stuff */
if __name__ == '__main__':
set_logging()
some_stuff_logging()
我无法弄清楚是什么原因导致 hasHandlers 方法中没有返回 False,尽管没有附加到记录器