Как я могу получить массив всех возможных уровней журнала? - PullRequest
0 голосов
/ 01 мая 2018

Я хочу получить все возможные, текущие, лог уровни в приложении. Я использую стандартную библиотеку журналов для 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')

Я не могу найти такую ​​функцию в документации . Самое близкое, что я могу найти, это getLevelName (int level), который будет возвращать строку, основанную на целом числе.

1 Ответ

0 голосов
/ 01 мая 2018

Исходя из вопроса @ymbirtt, я решил это: Он вызывает _levelNames, а затем обходит его только для получения ответов на строку.

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

В питоне 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')

Редактировать: поменялись местами значение и ключ вокруг продолжает упорядочивать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...