我不知道我在这里错过了什么,但看到下面我的代码
def TestLogger(name):
logger = logging.getLogger(name)
logger.setLevel(LOG_LEVEL)
handler = logging.FileHandler(LOG_FILE)
handler.setFormatter(Formatter(LOG_FORMAT))
handler.setLevel(LOG_LEVEL)
logger.addHandler(handler)
return logger
def printme( str ):
logger = TestLogger(__name__)
logger.debug( str)
return
def main(args=None):
logger = TestLogger(__name__)
printme("1");
printme("2");
printme("3");
if __name__ == "__main__":
main()
作为回报,我只花了三行,但我得到这么多。。。 我错过了什么? 输出:
09:45:00,017 [DEBUG]:[__main__]: 1 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,017 [DEBUG]:[__main__]: 1 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,018 [DEBUG]:[__main__]: 2 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,018 [DEBUG]:[__main__]: 2 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,018 [DEBUG]:[__main__]: 2 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,019 [DEBUG]:[__main__]: 3 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,019 [DEBUG]:[__main__]: 3 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,019 [DEBUG]:[__main__]: 3 in C:/demo/TryMe.py:61 2019-05-16
09:45:00,019 [DEBUG]:[__main__]: 3 in C:/demo/TryMe.py:61
每次调用
TestLogger
时,它都会向记录器添加另一个处理程序。每个处理程序打印一条日志消息。你知道吗你叫它一次
main()
。然后,当您调用printme("1")
时,您会再次调用它。所以它记录了1
两次。你知道吗当您调用
printme("2")
时,您第三次调用它,因此它会记录2
三次。你知道吗当您调用
printme("3")
时,您会再次调用它,因此它会记录3
四次。你知道吗只需调用
TestLogger()
一次,并将其作为参数传递给printme()
。你知道吗对于全局变量来说,这也是一个合理的用法,而不必将
logger
作为参数传递给可能需要进行日志记录的每个函数。你知道吗或者可以将
logger = logging.getLogger(__name__)
放在除main()
之外的所有函数中。这将获得由TestLogger()
配置的记录器。你知道吗相关问题 更多 >
编程相关推荐