ロギングを有効にする

このライブラリは、Google Ads API のインタラクションに多用途のロギングを提供します。キャプチャできるのは次のとおりです。

  • 詳細情報: API に送信されたリクエスト全体と受信したレスポンス。
  • 簡潔な概要: API インタラクションの概要。

これらのロギング設定は、次の 2 つの方法で制御できます。

  • クライアント ライブラリの構成: google-ads.yaml ファイルまたは環境変数で、ライブラリ固有の構成オプションを使用します。
  • Python を使用してプログラムで作成する: Python の組み込み logging フレームワークを使用して直接制御します。

google-ads.yaml を使用して構成する

ロギングは、GoogleAdsClient インスタンスが初期化されると(load_from_storage を呼び出すときなど)、自動的に構成されます。初期化時に、ライブラリは次の処理を行います。

  • 指定されたロギング設定を構成から読み取ります。
  • これらの設定を Python の組み込み logging.config.dictConfig に渡して有効にします。

たとえば、google-ads.yaml ファイルに logging セクションを追加できます。

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 セクションがないインストール済みパッケージとしてライブラリを使用する場合は、プログラムでロギングをアプリケーションのロギング設定と統合できます。addHandler を使用してロギング ハンドラをライブラリのロガー インスタンス(google.ads.googleads.client)に接続し、ターゲット ログレベルを設定します。

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)にログを送信する場合は、logging.StreamHandler に sys.stderr を渡します。

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 インターセプタを作成することで、独自のカスタム ロギングを設定できます。詳細とカスタム ロギング インターセプタの例については、ロギング ガイドをご覧ください。