如何获取所有可能的日志级别数组?

时间:2018-05-01 13:51:11

标签: python python-2.7 logging

我希望获得应用程序中所有可能的当前日志级别。我正在使用python 2.7的标准日志库。

有些事情:

logging.getLevels()
[DEBUG, INFO, WARNING, ERROR, CRITICAL]

我的用例是将其传递给argsparse。我们在应用程序中定义了一些自定义日志级别,对于那些自动传播到argparse中的人来说会很好。

parser = argparse.ArgumentParser('our app')
parser.add_argument('-l', '--loglevel', type=str, help='Log level', 
choices=logging.getLevels(), default='WARNING')

我在the documentation找不到这样的函数。我能找到的最接近的是getLevelName(int level),它将根据整数返回字符串。

1 个答案:

答案 0 :(得分:3)

关于@ymbirtt链接的问题后,我解决了这个问题: 它调用_levelNames,然后遍历它,只获得字符串答案。

[v for (k,v) in logging._levelNames.iteritems() if type(k) is int]

在python 3中:

[v for (k,v) in logging._levelNames.items() if type(k) is int]

在完成的解决方案中:

parser.add_argument('-l', '--loglevel', type=str, help='Log level', 
choices=[v for (k,v) in logging._levelNames.iteritems() if type(k) is int], 
default='WARNING')

编辑:交换值和密钥保持排序