gpt4 book ai didi

python - 禁用每个方法/函数的日志记录?

转载 作者:太空狗 更新时间:2023-10-29 17:27:34 24 4
gpt4 key购买 nike

我是 Python 日志记录的新手,我可以很容易地看出它比我想出的自制解决方案更受欢迎。

有一个问题我似乎找不到答案:如何在每个方法/函数的基础上压制日志消息?

我假设的模块包含一个函数。在我开发过程中,日志调用提供了很大的帮助:

logging.basicConfig(level=logging.DEBUG,
format=('%(levelname)s: %(funcName)s(): %(message)s'))
log = logging.getLogger()

my_func1():
stuff...
log.debug("Here's an interesting value: %r" % some_value)
log.info("Going great here!")
more stuff...

当我结束“my_func1”的工作并开始处理第二个函数“my_func2”时,来自“my_func1”的日志消息开始从“有用”变为“困惑”。

是否有单行魔术语句,例如“logging.disabled_in_this_func()”,我可以将其添加到“my_func1”的顶部以禁用“my_func1”中的所有日志记录调用,但仍然保留所有其他日志记录调用功能/方法不变?

谢谢

Linux,Python 2.7.1

最佳答案

诀窍是创建多个记录器。

这有几个方面。

首先。不要在模块的开头使用 logging.basicConfig()在主导入开关中使用它

 if __name__ == "__main__":
logging.basicConfig(...)
main()
logging.shutdown()

其次。永远不要获取“根”记录器,除非设置全局首选项。

第三。为可能启用或禁用的事物获取单独的命名记录器。

log = logging.getLogger(__name__)

func1_log = logging.getLogger( "{0}.{1}".format( __name__, "my_func1" )

现在您可以在每个命名记录器上设置日志记录级别。

log.setLevel( logging.INFO )
func1_log.setLevel( logging.ERROR )

关于python - 禁用每个方法/函数的日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341064/

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