Перезаписать конфигурацию журнала Python во время выполнения - PullRequest
0 голосов
/ 05 июля 2019

У меня есть базовая конфигурация в моем проекте

С, например, __init__.py:

import logging
logging.basicConfig(level=logging.INFO)

И я хотел бы изменить глобальный уровень во время выполнения после чтения пользовательских параметров,Возможно ли это без перемещения предыдущих строк после этого?

Полный пример будет выглядеть примерно так:

logger = logging.getLogger(__name__)

def run():
    parser = OptionParser()
    parser.add_option("--debug", dest="debug",
                      action="store_true",
                      help="flag to indicate if debug should be enabled",
                      default=False)
    (options, args) = parser.parse_args()

    if options.debug:
        # change the logging configuration
        pass
        #logging.basicConfig(level=logging.DEBUG)

    # call the application code

1 Ответ

1 голос
/ 05 июля 2019

Использование Logger.setLevel:

logger = logging.getLogger(__name__)
...

if options.debug:
    logger.setLevel(logging.DEBUG)

EDIT:

Если вы хотите установить уровень всех доступных в настоящее время регистраторов, вы можете сделать что-то вроде этого:

loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
for logger in loggers:
    logger.setLevel(logging.DEBUG)

Или вы можете имитировать поведение logging.basicConfig:

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