Включить ведение журнала

Библиотека предоставляет универсальные возможности ведения журналов для взаимодействий с Google Ads API. Вы можете записывать:

  • Подробная информация. Полные запросы, отправленные в API, и полученные ответы.
  • Краткие сводки. Общие сведения о взаимодействиях с API.

Вы можете управлять этими настройками двумя способами:

  • Настройка клиентской библиотеки. Используйте специальные параметры конфигурации библиотеки в файле google-ads.yaml или переменных среды.
  • Программно с помощью Python. Используйте встроенный фреймворк logging для прямого управления.

Настроить через google-ads.yaml

Ведение журнала настраивается автоматически при инициализации экземпляра GoogleAdsClient (например, при вызове load_from_storage). При инициализации библиотека:

  • Считывает заданные вами настройки ведения журнала из конфигурации.
  • Передает эти настройки встроенной функции Python logging.config.dictConfig, чтобы активировать их.

Например, вы можете добавить раздел logging в файл google-ads.yaml:

logging:
  version: 1
  disable_existing_loggers: false
  formatters:
    default_fmt:
      format: '[%(asctime)s - %(levelname)s] %(message).5000s'
      datefmt: '%Y-%m-%d %H:%M:%S'
  handlers:
    default_handler:
      class: logging.StreamHandler
      formatter: default_fmt
  loggers:
    '':
      handlers: [default_handler]
      level: INFO

Настройка с помощью кода

Если вы используете библиотеку как установленный пакет без раздела logging в файле конфигурации, вы можете интегрировать ее ведение журнала с настройками ведения журнала вашего приложения программным способом. Прикрепите обработчик журнала к экземпляру регистратора библиотеки (google.ads.googleads.client), используя addHandler, и задайте целевой уровень журнала:

import logging
import sys

# Retrieve the library's logger instance.
logger = logging.getLogger("google.ads.googleads.client")

# Direct logs to standard output (stdout).
logger.addHandler(logging.StreamHandler(sys.stdout))

# Set the log level to DEBUG to view detailed messages.
logger.setLevel(logging.DEBUG)

Если вы хотите отправлять журналы в стандартный поток ошибок (stderr), который часто используется для сообщений об ошибках и предупреждений, передайте sys.stderr в logging.StreamHandler:

import logging
import sys

logger = logging.getLogger("google.ads.googleads.client")
logger.addHandler(logging.StreamHandler(sys.stderr))
logger.setLevel(logging.WARNING)

Уровни журналов

Клиент создает журналы с разными уровнями серьезности. Вы можете настроить регистратор так, чтобы видеть некоторые или все из следующих данных:

Уровень Запрос выполнен Не удалось выполнить запрос
DEBUG Подробный журнал с полными объектами запросов и ответов в формате JSON. Подробный журнал с полными объектами запросов и исключений в формате JSON.
INFO Краткий обзор с указанием полей запроса и ответа. Подробный журнал с полными объектами запросов и исключений в формате JSON.
WARNING Нет Краткая сводка с информацией о запросе, состоянии исключения и сообщении об ошибке.

Поскольку фреймворк ведения журналов Python игнорирует сообщения журнала, которые менее серьезны, чем настроенный уровень, установка уровня WARNING показывает только краткие сообщения для неудачных запросов, а установка уровня DEBUG показывает все типы журналов в таблице.

Как вести журнал в файле

Вы можете записывать журналы в файл программно на языке Python или перенаправляя вывод из командной строки.

Как вести журнал в файл на языке Python

Чтобы записывать журналы непосредственно в файл из Python, прикрепите logging.FileHandler к регистратору клиента:

import logging

logger = logging.getLogger("google.ads.googleads.client")
file_handler = logging.FileHandler("google_ads.log")
logger.addHandler(file_handler)
logger.setLevel(logging.INFO)

Как перенаправить вывод с помощью оболочки

При запуске примеров скриптов, таких как get_campaigns.py, из командной строки можно перенаправить вывод журнала консоли в файл с помощью оболочки операционной системы.

Чтобы сохранить стандартный вывод в файл (перезаписав существующий файл):

python get_campaigns.py -c $CUSTOMER_ID > campaign_logs.txt

Чтобы добавить стандартный вывод в существующий файл:

python get_campaigns.py -c $CUSTOMER_ID >> campaign_logs.txt

Чтобы сохранить стандартный вывод и стандартную ошибку (для ошибок и предупреждений) в один файл:

python get_campaigns.py -c $CUSTOMER_ID > all_logs.txt 2>&1

Или в Bash 4+:

python get_campaigns.py -c $CUSTOMER_ID &> all_logs.txt

Специальные перехватчики gRPC

Клиентская библиотека Python использует перехватчики gRPC для доступа к сведениям о запросах и ответах и их регистрации. Вы можете настроить собственное ведение журнала, создав перехватчик gRPC с собственной логикой. Подробнее о ведении журналов и пример пользовательского перехватчика для ведения журналов можно найти в руководстве по ведению журналов.