Logging aktivieren

Die Bibliothek bietet vielseitige Logging-Funktionen für Interaktionen mit der Google Ads API. Sie können Folgendes erfassen:

  • Detaillierte Informationen: Vollständige Anfragen, die an die API gesendet wurden, und empfangene Antworten.
  • Prägnante Zusammenfassungen: Allgemeine Übersichten über API-Interaktionen.

Sie können diese Logging-Einstellungen auf zwei Arten steuern:

  • Konfiguration der Clientbibliothek: Verwenden Sie die spezifischen Konfigurationsoptionen der Bibliothek in Ihrer google-ads.yaml-Datei oder in Umgebungsvariablen.
  • Programmatisch mit Python: Verwenden Sie das integrierte logging-Framework von Python für die direkte Steuerung.

Über google-ads.yaml konfigurieren

Das Logging wird automatisch konfiguriert, wenn eine GoogleAdsClient-Instanz initialisiert wird (z. B. wenn Sie load_from_storage aufrufen). Bei der Initialisierung führt die Bibliothek Folgendes aus:

Sie können beispielsweise einen logging-Abschnitt in Ihre google-ads.yaml-Datei einfügen:

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

Programmatisch konfigurieren

Wenn Sie die Bibliothek als installiertes Paket ohne den Abschnitt logging in Ihrer Konfigurationsdatei verwenden, können Sie das Logging programmatisch in die Logging-Einrichtung Ihrer Anwendung einbinden. Hängen Sie mit addHandler einen Logging-Handler an die Logger-Instanz der Bibliothek (google.ads.googleads.client) an und legen Sie die Ziel-Logebene fest:

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)

Wenn Sie Logs an den Standardfehler (stderr) senden möchten, der häufig für Fehlermeldungen und Warnungen verwendet wird, übergeben Sie sys.stderr an logging.StreamHandler:

import logging
import sys

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

Logebenen

Der Client generiert Logs mit mehreren Schweregraden. Sie können den Logger so konfigurieren, dass einige oder alle der folgenden Informationen angezeigt werden:

Level Erfolgreiche Anfrage Fehlgeschlagene Anfrage
DEBUG Ein detailliertes Protokoll mit vollständigen Anfrage- und Antwortobjekten als JSON. Ein detailliertes Log mit vollständigen Anfrage- und Ausnahmeobjekten als JSON.
INFO Eine prägnante Zusammenfassung mit bestimmten Anfrage- und Antwortfeldern. Ein detailliertes Log mit vollständigen Anfrage- und Ausnahmeobjekten als JSON.
WARNING – Eine kurze Zusammenfassung mit spezifischen Anfrageinformationen, dem Ausnahmestatus und der Fehlermeldung.

Da das Python-Logging-Framework Logeinträge ignoriert, die weniger schwerwiegend sind als die konfigurierte Ebene, werden bei der Einstellung WARNING nur kurze Meldungen für fehlgeschlagene Anfragen angezeigt. Bei der Einstellung DEBUG werden dagegen alle Logtypen in der Tabelle angezeigt.

In einer Datei protokollieren

Sie können Logs entweder programmatisch in Python oder durch Weiterleiten der Ausgabe über die Befehlszeile in eine Datei schreiben.

In Python in eine Datei loggen

Wenn Sie Logs direkt aus Python in eine Datei schreiben möchten, hängen Sie einen logging.FileHandler an den Client-Logger an:

import logging

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

Ausgabe mithilfe der Shell umleiten

Wenn Sie Beispielskripts wie get_campaigns.py über die Befehlszeile ausführen, können Sie die Ausgabe des Console-Logs mit der Shell Ihres Betriebssystems in eine Datei umleiten.

So speichern Sie die Standardausgabe in einer Datei (wobei eine vorhandene Datei überschrieben wird):

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

So hängen Sie die Standardausgabe an eine vorhandene Datei an:

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

So speichern Sie sowohl die Standardausgabe als auch den Standardfehler (für Fehler und Warnungen) in derselben Datei:

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

Oder in Bash 4+:

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

Benutzerdefinierte gRPC-Interceptors

Die Python-Clientbibliothek verwendet gRPC-Interceptors, um auf Anfrage- und Antwortdetails zuzugreifen und diese zu protokollieren. Sie können ein eigenes benutzerdefiniertes Logging einrichten, indem Sie einen gRPC-Interceptor mit benutzerdefinierter Logik erstellen. Weitere Informationen und ein Beispiel für einen benutzerdefinierten Logging-Interceptor finden Sie im Logging-Leitfaden.