Регистрация в Python: обратные эффекты disable () - PullRequest
7 голосов
/ 05 августа 2011

Документы logging говорят, что вызов метода logging.disable(lvl) может "временно ограничить вывод журнала во всем приложении", но у меня возникают проблемы с поиском "временно".Возьмем, к примеру, следующий скрипт:

import logging
logging.disable(logging.CRITICAL)
logging.warning("test")
# Something here
logging.warning("test")

До сих пор я не смог найти Something here, который снова включит систему ведения журнала в целом и разрешит второй warning пройти через.Есть ли обратное к disable()?

Ответы [ 2 ]

12 голосов
/ 05 августа 2011
logging.disable(logging.NOTSET)    
0 голосов
/ 09 октября 2014

Основываясь на ответе @unutbu, я создал менеджер контекста:

import logging
log = logging.getLogger(__name__)

class SuppressLogging:
    """
    Context handler class that suppresses logging for some controlled code.
    """

    def __init__(self, loglevel):
        logging.disable(loglevel)
        return

    def __enter__(self):
        return 

    def __exit__(self, exctype, excval, exctraceback):
        logging.disable(logging.NOTSET)
        return False

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    log.info("log this")
    with SuppressLogging(logging.WARNING):
        log.info("don't log this")
        log.warning("don't log this warning")
        log.error("log this error while up to WARNING suppressed")
    log.info("log this again")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...