Deaktivieren Sie die Boto -Protokollierung, ohne die Boto -Dateien zu ändern
-
12-09-2019 - |
Frage
Ich benutze die Boto -Bibliothek, um mit AWS zu sprechen. Ich möchte die Protokollierung deaktivieren. (Oder leiten Sie /dev /null oder eine andere Datei um). Ich kann keinen offensichtlichen Weg finden, dies zu tun. Ich habe es versucht, aber das scheint nicht zu helfen.
import boto
boto.set_file_logger('boto', 'logs/boto.log')
Dies sagt, es ist möglich, http://developer.amazonwebservices.com/connect/thread.jspa?messageId=52727 췷 Aber Afaik Die Dokumentation sagt nicht wie.
Lösung
Du könntest es versuchen
import logging
logging.getLogger('boto').setLevel(logging.CRITICAL)
Dies unterdrückt alle (außer kritischen) Fehler.
Boto verwendet Protokollierungskonfigurationsdateien (z. /etc/boto.cfg
, ~/.boto
) Sehen Sie also, ob Sie es auf Ihre Bedürfnisse konfigurieren können.
Das set_file_logger
Call einfach fügt dem Protokollierungs-Setup eine benutzerdefinierte Datei hinzu, sodass Sie diese nicht zum Ausschalten verwenden können.
Andere Tipps
Ich bewege die Boto3 -Antwort aus den Kommentaren (nämlich Charneykaye und Gene_wood) zu einer ordnungsgemäßen Antwort:
import logging
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler()) # Writes to console
logger.setLevel(logging.DEBUG)
logging.getLogger('boto3').setLevel(logging.CRITICAL)
logging.getLogger('botocore').setLevel(logging.CRITICAL)
logging.getLogger('s3transfer').setLevel(logging.CRITICAL)
logging.getLogger('urllib3').setLevel(logging.CRITICAL)
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
Um alle Holzfäller zu bekommen, folgen Sie dem Antwort von Leobarcellos:
import logging
loggers_dict = logging.Logger.manager.loggerDict
Besser noch, deaktivieren Sie propagate
für Boto:
import boto
boto.set_file_logger('boto', 'logs/boto.log')
logging.getLogger('boto').propagate = False