diff --git a/changelog.d/2974.change.rst b/changelog.d/2974.change.rst new file mode 100644 index 0000000000..fcfa00496d --- /dev/null +++ b/changelog.d/2974.change.rst @@ -0,0 +1 @@ +Setuptools now relies on the Python logging infrastructure to log messages. Instead of using ``distutils.log.*``, use ``logging.getLogger(name).*``. diff --git a/setuptools/__init__.py b/setuptools/__init__.py index 9d6f0bc0dd..43d1c96eb2 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -18,6 +18,7 @@ from setuptools.dist import Distribution from setuptools.depends import Require from . import monkey +from . import logging __all__ = [ @@ -149,6 +150,7 @@ def finalize_options(self): def setup(**attrs): # Make sure we have any requirements needed to interpret 'attrs'. + logging.configure() _install_setup_requires(attrs) return distutils.core.setup(**attrs) diff --git a/setuptools/logging.py b/setuptools/logging.py new file mode 100644 index 0000000000..dbead6e664 --- /dev/null +++ b/setuptools/logging.py @@ -0,0 +1,30 @@ +import sys +import logging +import distutils.log +from . import monkey + + +def _not_warning(record): + return record.levelno < logging.WARNING + + +def configure(): + """ + Configure logging to emit warning and above to stderr + and everything else to stdout. This behavior is provided + for compatibilty with distutils.log but may change in + the future. + """ + err_handler = logging.StreamHandler() + err_handler.setLevel(logging.WARNING) + out_handler = logging.StreamHandler(sys.stdout) + out_handler.addFilter(_not_warning) + handlers = err_handler, out_handler + logging.basicConfig( + format="{message}", style='{', handlers=handlers, level=logging.DEBUG) + monkey.patch_func(set_threshold, distutils.log, 'set_threshold') + + +def set_threshold(level): + logging.root.setLevel(level*10) + return set_threshold.unpatched(level)