123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- # Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License"). You
- # may not use this file except in compliance with the License. A copy of
- # the License is located at
- #
- # https://aws.amazon.com/apache2.0/
- #
- # or in the "license" file accompanying this file. This file is
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
- # ANY KIND, either express or implied. See the License for the specific
- # language governing permissions and limitations under the License.
- import logging
- from boto3.compat import _warn_deprecated_python
- from boto3.session import Session
- __author__ = 'Amazon Web Services'
- __version__ = '1.28.55'
- # The default Boto3 session; autoloaded when needed.
- DEFAULT_SESSION = None
- def setup_default_session(**kwargs):
- """
- Set up a default session, passing through any parameters to the session
- constructor. There is no need to call this unless you wish to pass custom
- parameters, because a default session will be created for you.
- """
- global DEFAULT_SESSION
- DEFAULT_SESSION = Session(**kwargs)
- def set_stream_logger(name='boto3', level=logging.DEBUG, format_string=None):
- """
- Add a stream handler for the given name and level to the logging module.
- By default, this logs all boto3 messages to ``stdout``.
- >>> import boto3
- >>> boto3.set_stream_logger('boto3.resources', logging.INFO)
- For debugging purposes a good choice is to set the stream logger to ``''``
- which is equivalent to saying "log everything".
- .. WARNING::
- Be aware that when logging anything from ``'botocore'`` the full wire
- trace will appear in your logs. If your payloads contain sensitive data
- this should not be used in production.
- :type name: string
- :param name: Log name
- :type level: int
- :param level: Logging level, e.g. ``logging.INFO``
- :type format_string: str
- :param format_string: Log message format
- """
- if format_string is None:
- format_string = "%(asctime)s %(name)s [%(levelname)s] %(message)s"
- logger = logging.getLogger(name)
- logger.setLevel(level)
- handler = logging.StreamHandler()
- handler.setLevel(level)
- formatter = logging.Formatter(format_string)
- handler.setFormatter(formatter)
- logger.addHandler(handler)
- def _get_default_session():
- """
- Get the default session, creating one if needed.
- :rtype: :py:class:`~boto3.session.Session`
- :return: The default session
- """
- if DEFAULT_SESSION is None:
- setup_default_session()
- _warn_deprecated_python()
- return DEFAULT_SESSION
- def client(*args, **kwargs):
- """
- Create a low-level service client by name using the default session.
- See :py:meth:`boto3.session.Session.client`.
- """
- return _get_default_session().client(*args, **kwargs)
- def resource(*args, **kwargs):
- """
- Create a resource service client by name using the default session.
- See :py:meth:`boto3.session.Session.resource`.
- """
- return _get_default_session().resource(*args, **kwargs)
- # Set up logging to ``/dev/null`` like a library is supposed to.
- # https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library
- class NullHandler(logging.Handler):
- def emit(self, record):
- pass
- logging.getLogger('boto3').addHandler(NullHandler())
|