gpt4 book ai didi

python - 在 Python 中调用 getLogger 之前,我是否需要显式检查 __name__ == "__main__"?

转载 作者:太空狗 更新时间:2023-10-29 21:07:06 26 4
gpt4 key购买 nike

我相信在使用 Python 的内置日志记录模块时,将主模块中的 logger 作为根记录器是标准做法。假设这是正确的,在我看来,对于任何可能会或可能不会作为主要运行的模块,我都需要明确检查。原因是,如果我遵循调用 logging.getLogger(__name__) 的标准做法,我将得到一个名为 __main__ 的记录器,而不是根记录器:

import logging
print logging.getLogger().name # root
print logging.getLogger(__name__).name # __main__

最好的做法是始终检查吗?

if __name__ == "__main__":
logger = logging.getLogger()
else:
logger = logging.getLogger(__name__)

这还不错,因为我总是有其他代码只有在 __name__ == "__main__" 时才会运行(通常包括对 logging.basicConfig 的调用)但如果只需要一行而不是更多行就好了。

最佳答案

是的 - 我相信这是个好主意。因为——发生的事情如下——

如果您正在运行一个程序作为 python prog.py -(__name__ 将是 __main__)并且您将获得 root记录器(预期)。或者你甚至可以给一个你喜欢的名字(比如 prog)。当您 import 该模块时 - 名称将是模块的名称。 (在本例中为不带扩展名的 python 文件名 prog),这将帮助您识别日志的来源 - 这正是您想要的。所以总的来说,这样做是个好主意。

关于python - 在 Python 中调用 getLogger 之前,我是否需要显式检查 __name__ == "__main__"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com