Logging aktivieren

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

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

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

  • Clientbibliothekskonfiguration: 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 folgende Schritte aus:

Sie können beispielsweise einen logging-Abschnitt in die Datei google-ads.yaml 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 logging-Abschnitt in der 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 Zielprotokollebene 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 lieber an die Standardfehlerausgabe (stderr) senden möchten, die 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)

Protokollebenen

Der Client generiert Logs auf verschiedenen 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 Log mit vollständigen Anfrage- und Antwortobjekten im JSON-Format. Ein detailliertes Log mit vollständigen Anfrage- und Ausnahmeobjekten im JSON-Format.
INFO Eine kurze Zusammenfassung mit bestimmten Anfrage- und Antwortfeldern. Ein detailliertes Log mit vollständigen Anfrage- und Ausnahmeobjekten im JSON-Format.
WARNING – Eine kurze Zusammenfassung mit bestimmten Anfrageinformationen, dem Ausnahmezustand und der Fehlermeldung.

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

In eine Datei protokollieren

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

In Python in eine Datei protokollieren

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 mit der Shell umleiten

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

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

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 die Standardfehlerausgabe (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-Interzeptoren

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