Журналирование Python — это мощный инструмент, позволяющий разработчикам записывать и отслеживать ход выполнения своего кода во время выполнения. Он предоставляет ценную информацию о поведении приложения, упрощая выявление и устранение проблем. В этой статье мы углубимся в различия между функцией logging.debug
и объектом logger
, изучим их функции, варианты использования и лучшие практики. Итак, начнём!
Понимание logging.debug:
Функция logging.debug
— это встроенный метод, предоставляемый модулем ведения журнала Python. В основном он используется для целей низкоуровневой отладки. Когда вы вызываете logging.debug(message)
, сообщение регистрируется с уровнем DEBUG
, который является самым низким уровнем протоколирования. По умолчанию сообщения DEBUG
не отображаются в консоли и не записываются в файл, если только в конфигурации журнала не настроена их запись.
Вот пример использования logging.debug
:
import logging
logging.basicConfig(level=logging.DEBUG)
def my_function():
logging.debug("This is a debug message.")
# Rest of the code
my_function()
В этом примере метод basicConfig
используется для установки уровня ведения журнала DEBUG
. Следовательно, сообщение отладки внутри my_function
будет отображаться в консоли.
Понимание объекта Logger:
Объект logger
— это сердце модуля ведения журналов Python. Он отвечает за создание записей журнала и пересылку их обработчикам для вывода. В отличие от logging.debug
, который регистрирует сообщения на уровне DEBUG
, объект logger
предоставляет ряд уровней журналирования, например INFO
, WARNING
, ERROR
и CRITICAL
, каждый из которых служит разной цели.
Чтобы использовать объект logger
, вам необходимо создать его экземпляр и настроить его поведение. Вот пример:
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
def my_function():
logger.debug("This is a debug message.")
# Rest of the code
my_function()
В этом примере мы создаем объект logger
с помощью метода getLogger(__name__)
, который автоматически присваивает имени регистратора имя текущего модуля. Затем мы настраиваем уровень логгера на DEBUG
и создаем console_handler
для отправки записей журнала на консоль. Наконец, мы установили специальный форматировщик, чтобы указать формат записи журнала.
Сравнение logging.debug и logger:
Хотя объект logging.debug
и logger
можно использовать в целях отладки, между ними есть некоторые ключевые различия. Вот несколько моментов, которые следует учитывать:
-
Детализация:
logging.debug
— это отдельная функция, регистрирующая сообщения на уровнеDEBUG
, тогда как объектlogger
обеспечивает несколько уровней ведения журналов, позволяющие выбрать подходящий уровень детализации журналов. -
Конфигурация:
logging.debug
опирается на глобальную конфигурацию ведения журнала, установленнуюbasicConfig
, тогда как объектlogger
допускает более детальную настройку. конфигурация. Вы можете настроить поведение средства ведения журнала, обработчики, средства форматирования и даже передавать журналы родительским средствам ведения журнала. -
Гибкость: с помощью объекта
logger
вы можете создавать несколько экземпляров средства ведения журнала с разными конфигурациями, что упрощает управление журналами и их фильтрацию на основе различных модулей или компонентов вашего приложения.
Гибкость. p>
В заключение, объект logging.debug
и logger
играют решающую роль в ведении журналов Python. Хотя logging.debug
— это простой и быстрый способ регистрации отладочных сообщений, объект logger
обеспечивает большую гибкость и контроль над уровнями журналирования, конфигурацией и местами назначения вывода. Поняв разницу между этими двумя методами ведения журнала, вы сможете эффективно использовать ведение журнала Python для расширения возможностей отладки и мониторинга.