Отключить ведение журнала без изменения файлов Boto - PullRequest
41 голосов
/ 02 ноября 2009

Я использую библиотеку Boto для общения с AWS. Я хочу отключить ведение журнала. (Или перенаправить в / dev / null или другой файл). Я не могу найти очевидный способ сделать это. Я попробовал это, но это, похоже, не помогает.

import boto
boto.set_file_logger('boto', 'logs/boto.log')

Это говорит, что это возможно, http://developer.amazonwebservices.com/connect/thread.jspa?messageID=52727&#52727, но AFAIK документация не говорит, как.

Ответы [ 3 ]

73 голосов
/ 03 ноября 2009

Вы можете попробовать

import logging
logging.getLogger('boto').setLevel(logging.CRITICAL)

, который подавляет все (кроме КРИТИЧЕСКИХ) ошибок.

Boto использует файлы конфигурации регистрации (например, /etc/boto.cfg, ~/.boto), поэтому посмотрите, можете ли вы настроить его в соответствии с вашими потребностями.

Вызов set_file_logger просто добавляет пользовательский файл в настройку ведения журнала, поэтому вы не можете использовать его, чтобы отключить ведение журнала.

20 голосов
/ 13 апреля 2018

Я перенесу ответ boto3 из комментариев (а именно, charneykaye и gene_wood) на правильный ответ:

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)

Чтобы получить все регистраторы, следуйте ответу от leobarcellos :

import logging
loggers_dict = logging.Logger.manager.loggerDict
4 голосов
/ 23 марта 2016

Еще лучше, отключите propagate для boto:

import boto
boto.set_file_logger('boto', 'logs/boto.log')
logging.getLogger('boto').propagate = False
...