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) 它将根据整数返回字符串。
根据 @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)
编辑:交换值和键保持排序