Die Bibliothek bietet vielseitige Protokollierungsmöglichkeiten für Google Ads API-Interaktionen. Sie können Folgendes aufnehmen:
- Detaillierte Informationen: Vollständige Anfragen, die an die API gesendet wurden, und empfangene Antworten.
- Kurze Zusammenfassungen: Ein allgemeiner Überblick über die Interaktionen.
Sie haben zwei Möglichkeiten, diese Protokollierungseinstellungen zu verwalten:
- Clientbibliothek konfigurieren: Verwenden Sie die spezifischen Konfigurationsoptionen der Bibliothek.
- Programmatisch mit Python: Verwenden Sie das integrierte Logging-Framework von Python, um die Protokollierung direkter zu steuern.
Die Protokollierung wird automatisch konfiguriert, wenn eine GoogleAdsClient
-Instanz initialisiert wird. Dieser Initialisierungsschritt erfolgt beispielsweise, wenn Sie die Methode load_from_storage
verwenden. Zu diesem Zeitpunkt wird die Bibliothek:
- Lesen Sie die angegebenen Logging-Einstellungen aus der Konfiguration.
- Übergeben Sie diese Einstellungen an die integrierte
logging.config.dictConfig
-Funktion von Python, um sie zu aktivieren.
Wenn diese Bibliothek als installiertes Paket verwendet wird, müssen Sie ihr Logging in die Logging-Einrichtung Ihrer Anwendung einbinden. Sie müssen der eigenen Logger-Instanz der Bibliothek einen Logging-Handler mit der Methode addHandler
hinzufügen. Dieser Handler bestimmt, wohin die Logmeldungen der Bibliothek weitergeleitet werden (z. B. an die Konsole oder in eine Datei). Rufen Sie dazu zuerst die Logger-Instanz der Bibliothek ab, wie hier gezeigt:
import logging
logger = logging.getLogger('google.ads.googleads.client')
Nachdem Sie den Logger der Bibliothek abgerufen haben, können Sie ihm mitteilen, wo Logmeldungen ausgegeben werden sollen.
Logs an die Konsole senden: Wenn Sie Logmeldungen in der Konsole anzeigen möchten, fügen Sie einen einfachen Handler hinzu. So leiten Sie Logs an die Standardausgabe (
stdout
) weiter:So legen Sie einen einfachen Handler fest, der den Logger anweist, in
stdout
zu schreiben:import sys # Assuming 'logger' was retrieved as per previous instructions logger.addHandler(logging.StreamHandler(sys.stdout))
Wenn Sie Logs lieber an die Standardfehlerausgabe (
stderr
) senden möchten, die häufig für Fehlermeldungen und Warnungen verwendet wird:import sys # Assuming 'logger' was retrieved as per previous instructions logger.addHandler(logging.StreamHandler(sys.stderr))
Andere Logging-Einstellungen programmatisch konfigurieren: Sobald Sie das Logger-Objekt haben, können Sie auch andere Logging-Einstellungen programmatisch mit dem integrierten logging-Modul von Python ändern. Wenn Sie beispielsweise die Logging-Ebene in
DEBUG
ändern möchten (wodurch detailliertere Meldungen angezeigt werden):logger.setLevel(logging.DEBUG)
Protokollebenen
Der Client generiert Logs auf verschiedenen Ebenen. Sie können Ihre Konfiguration so festlegen, dass einige oder alle der folgenden Informationen angezeigt werden:
Level | Erfolgreiche Anfrage | Fehlgeschlagene Anfrage |
---|---|---|
DEBUG |
Ein detailliertes Log mit vollständigen Anfrage- und Antwortobjekten als JSON. | Ein detailliertes Log mit vollständigen Anfrage- und Ausnahmeobjekten als JSON. |
INFO |
Eine kurze Zusammenfassung mit bestimmten Anfrage- und Antwortfeldern. | Ein detailliertes Log mit vollständigen Anfrage- und Ausnahmeobjekten als JSON. |
WARNING |
Keine | Eine kurze Zusammenfassung mit spezifischen Anfrageinformationen, dem Ausnahmezustand und der Ausnahmenachricht. |
Da das Python-Logging-Framework Logmeldungen ignoriert, die weniger schwerwiegend sind als die konfigurierte Ebene, werden bei der Einstellung WARNING
nur kurze Meldungen zu fehlgeschlagenen Anfragen angezeigt. Bei der Einstellung DEBUG
werden alle möglichen Arten von Logs in der obigen Tabelle angezeigt.
In Datei protokollieren
Wenn Sie Beispielskripts wie get_campaigns.py
über die Befehlszeile ausführen, können alle Logmeldungen, die normalerweise in der Konsole ausgegeben werden, in eine Datei umgeleitet werden. Dies ist eine Funktion der Shell Ihres Betriebssystems, nicht der Python-Bibliothek selbst. So gehts:
So speichern Sie die Standardausgabe (die meisten Logs) in einer Datei (dabei wird die Datei überschrieben):
python get_campaigns.py -c $CLIENT_ID > campaign_logs.txt
So hängen Sie die Standardausgabe an eine Datei an:
python get_campaigns.py -c $CLIENT_ID >> campaign_logs.txt
So speichern Sie sowohl die Standardausgabe als auch die Standardfehlerausgabe (für Fehler/Warnungen) in derselben Datei:
python get_campaigns.py -c $CLIENT_ID > all_logs.txt 2>&1
Oder in einigen modernen Shells wie Bash 4+:
python get_campaigns.py -c $CLIENT_ID &> all_logs.txt
Logging-Interceptor
Die Python-Clientbibliothek verwendet gRPC-Interceptors, um auf Anfrage- und Antwortdetails zuzugreifen und sie zu protokollieren. Sie können Ihr 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.