Отключить ведение журнала boto без изменения файлов boto.

StackOverflow https://stackoverflow.com/questions/1661275

Вопрос

Я использую библиотеку 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, в документации не указано, как это сделать.

Это было полезно?

Решение

Вы могли бы попробовать

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

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

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

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

Другие советы

Переношу ответ 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)

Чтобы получить все регистраторы, следуйте инструкциям ответ от леобарчеллоса:

import logging
loggers_dict = logging.Logger.manager.loggerDict

А еще лучше отключить propagate для бото:

import boto
boto.set_file_logger('boto', 'logs/boto.log')
logging.getLogger('boto').propagate = False
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top