我希望获得应用程序中所有可能的当前日志级别。我正在使用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),它将根据整数返回字符串。
答案 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')
编辑:交换值和密钥保持排序