Logging.debug против Logger: разгадка тайн ведения журналов Python

Журналирование 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можно использовать в целях отладки, между ними есть некоторые ключевые различия. Вот несколько моментов, которые следует учитывать:

  1. Детализация: logging.debug — это отдельная функция, регистрирующая сообщения на уровне DEBUG, тогда как объект loggerобеспечивает несколько уровней ведения журналов, позволяющие выбрать подходящий уровень детализации журналов.

  2. Конфигурация: logging.debugопирается на глобальную конфигурацию ведения журнала, установленную basicConfig, тогда как объект loggerдопускает более детальную настройку. конфигурация. Вы можете настроить поведение средства ведения журнала, обработчики, средства форматирования и даже передавать журналы родительским средствам ведения журнала.

  3. Гибкость: с помощью объекта loggerвы можете создавать несколько экземпляров средства ведения журнала с разными конфигурациями, что упрощает управление журналами и их фильтрацию на основе различных модулей или компонентов вашего приложения.

  4. Гибкость. p>

В заключение, объект logging.debugи loggerиграют решающую роль в ведении журналов Python. Хотя logging.debug— это простой и быстрый способ регистрации отладочных сообщений, объект loggerобеспечивает большую гибкость и контроль над уровнями журналирования, конфигурацией и местами назначения вывода. Поняв разницу между этими двумя методами ведения журнала, вы сможете эффективно использовать ведение журнала Python для расширения возможностей отладки и мониторинга.