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.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top