首页 > 解决方案 > 如何在 Python 代码中使用记录器级别状态

问题描述

我有以下记录器(Python 2.7):

logger = logging.getLogger('solution')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = ....
ch.setFormatter(formatter)
logger.addHandler(ch)

记录器可以设置为调试/信息等...

稍后在我的代码中,我确实收到了来自 API 的请求。我可以连接到测试 API 或生产 API。

#test
#url = 'http://...test....com/connect/'
#production
url = 'http://.......com/connect/'

有没有一种方法可以使用记录器级别,以便脚本自己知道它应该选择测试 url 还是生产 url?如您所见,其中一个正在评论中,我每次都必须手动更改它。

就像是:

If logger.level = 'DEBUG':
    url = 'http://...test....com/connect/
else
   url = 'http://.......com/connect/'

我知道我可以设置一个全局变量来解决这个问题,但我想知道记录器是否可以用于此。

标签: python

解决方案


您可以使用 logging.getLogger('solution').getEffectiveLevel() 以整数格式获取级别:

10 用于调试
30 用于默认等等..

然后,您可以使用这些值来激活控制语句。基本上这些值是作为常量存储在“logging.DEBUG”中的。所以常量“logging.DEBUG”实际上是 10。


推荐阅读