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

Ult*_*ion 6 python logging python-2.7

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

大致如下:

logging.getLevels()
[DEBUG, INFO, WARNING, ERROR, CRITICAL]
Run Code Online (Sandbox Code Playgroud)

我的用例是将其传递到 argsparse 中。我们在应用程序中定义了一些自定义日志级别,如果这些级别能够自动传播到 argparse 中,那就太好了。

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

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

Ult*_*ion 3

根据 @ymbirtt 链接的问题,我解决了这个问题:它调用 _levelNames,然后遍历它,仅获取字符串答案。

[v for (k,v) in logging._levelNames.iteritems() if type(k) is int]
Run Code Online (Sandbox Code Playgroud)

在Python 3中:

[v for (k,v) in logging._levelNames.items() if type(k) is int]
Run Code Online (Sandbox Code Playgroud)

在完成的解决方案中:

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')
Run Code Online (Sandbox Code Playgroud)

编辑:交换值和键保持排序