Уровень отладки с помощью Logging DEBUG Lines в Python
Чтобы записать строку отладки с помощью Logging в Python, проверьте, имеет ли регистратор хотя бы уровень ведения журнала DEBUG.
- Используйте метод logging.debug() с сообщением, переданным в качестве аргумента, чтобы вывести строку отладки на консоль или в файл.
Если уровень ведения журнала установлен на DEBUG, то регистратор будет печатать или записывать строки в консоль или файл журнала.
Если вы установите уровень ведения журнала INFO, WARNING, ERROR или CRITICAL, то строки DEBUG не будут записаны в файл журнала.
Порядок уровней ведения журнала:
DEBUG < INFO < WARNING < ERROR < CRITICAL
Пример 1
В этом примере мы импортируем модуль ведения журнала, установим уровень средства ведения журнала на DEBUG, а затем будем использовать метод debug() для регистрации строки DEBUG.
import logging
#create a logger
logger = logging.getLogger('mylogger')
#set logging level
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('mylog.log')
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
#write a debug message
logger.debug('This is a DEBUG message')
После запуска указанной выше программы в файле mylog.log вы могли увидеть следующее содержимое.
2019-02-25 22:31:40,353 - mylogger - DEBUG - This is an DEBUG message
Пример 2
Вы можете установить фильтр для обработчика журнала, чтобы записывать в файл только строки DEBUG.
import logging
class MyFilter(object):
def __init__(self, level):
self.__level = level
def filter(self, logRecord):
return logRecord.levelno <= self.__level
#create a logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('mylog.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#set filter to log only DEBUG lines
handler.addFilter(MyFilter(logging.DEBUG))
logger.addHandler(handler)
#write a debug line to log file
logger.debug('This is a DEBUG message')
logger.info('This is a INFO message')
logger.warning('This is a WARNING message')
logger.error('This is an ERROR message')
logger.critical('This is a CRITICAL message')
Консольный вывод:
2019-02-26 22:25:05,280 - mylogger - DEBUG - This is a DEBUG message
Было зарегистрировано только сообщение DEBUG, но никаких других сообщений типа INFO, WARNING, ERROR и CRITICAL.
Заключение
В этом руководстве на примерах Python мы узнали, как использовать уровень DEBUG библиотеки Logging в Python.
Автор