#python #logging
#python #ведение журнала
Вопрос:
У меня есть программа, в которой я записывал журналы как info, так и debug.
Поскольку отладка содержит также вызовы медленных функций, моя программа работает медленно, даже если я установил для отладки значение INFO.
Возможно ли полностью пропустить эти строки из вычислений?
в следующем примере должно пройти 10 секунд, прежде чем будет выполнен информационный журнал.
import logging.handlers
import sys
import time
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logging_stream_handler = logging.StreamHandler(sys.stdout)
logging_stream_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s --- %(message)s'))
logger.addHandler(logging_stream_handler)
logger.debug("aaa", time.sleep(10))
logger.debug("bbb")
logger.info("ccc")
Комментарии:
1. У вас не должно быть логики в ведении журнала!
2. logger.debug(«степень: %s», graph.degree(current_edge[направление]))
3. Либо вам нужна степень -> она должна быть в вашей обычной логике. Или вы этого не делаете -> это не имеет отношения к инструкции / функции debug.
4. @iScrE4m. Я с этим не согласен. Отладка предназначена для лучшего анализа чего-либо, возможно, с точки зрения программиста, и если мне нужно запустить функцию, которая выполняет глубокий анализ (обычно не требуется), в чем проблема? Я думаю, что предлагаемое решение поставить «if logger.isEnabledFor (ведение журнала. DEBUG): » для журнала ветвей все в порядке
5. Решение работает, и оно приятное и простое — просто убедитесь, что вам это действительно нужно, это все, что я говорю.
Ответ №1:
Вы можете проверить, включен ли регистратор для такого уровня с isEnabledFor
помощью метода:
if logger.isEnabledFor(logging.DEBUG):
logger.debug("aaa", time.sleep(10))
logger.debug("bbb")
Комментарии:
1. Я сделал это, благодаря всем строкам «logger.debug». если logger.isEnabledFor(ведение журнала. DEBUG): logger.debug(«aaa», time.sleep(10))
Ответ №2:
Вы не должны вести журнал внутри команд отладки. Если необходимо, то для того, чтобы пропустить это, вы должны разветвлять свой код.
import logging.handlers
import sys
import time
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logging_stream_handler = logging.StreamHandler(sys.stdout)
logging_stream_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s --- %(message)s'))
logger.addHandler(logging_stream_handler)
if logger.isEnabledFor(logging.DEBUG):
logger.debug("aaa", time.sleep(10))
logger.debug("bbb")
logger.info("ccc")