diff --git a/doc/misc.rst b/doc/misc.rst index a30092f62a194c8396e156bffb0e57c2fa80a0f8..467b3d78646d3662b3534adf0850e035ff8582e8 100644 --- a/doc/misc.rst +++ b/doc/misc.rst @@ -1,5 +1,8 @@ +Installation and Usage +====================== + Installation -============ +------------ This command should install :mod:`pytential`:: @@ -19,6 +22,22 @@ and say:: In addition, you need to have :mod:`numpy` installed. +Logging +------- + +Logging output for scripts that use :mod:`pytential` may be controlled on a +per-module basis through the environment variables ``PYTENTIAL_LOG_`` + +*log_level*. The variable for the desired level should be set to a +colon-separated list of module names. Example usage:: + + PYTENTIAL_LOG_DEBUG=pytential:loopy PYTENTIAL_LOG_INFO=boxtree python test.py + +This sets the logging level of :mod:`pytential` and :mod:`loopy` to +:attr:`logging.DEBUG`, and the logging level of :mod:`boxtree` to +:attr:`logging.INFO`. + +Note: This feature is incompatible with :func:`logging.basicConfig()`. + User-visible Changes ==================== diff --git a/pytential/__init__.py b/pytential/__init__.py index 5d8c61fce75f2b9c1fdcdadd6eac2ef2188dcd1a..98e62c7164105a4c8cb0d1225706ad666ce233d1 100644 --- a/pytential/__init__.py +++ b/pytential/__init__.py @@ -30,25 +30,25 @@ from pytential.symbolic.execution import bind from pytools import memoize_on_first_arg -import os - -PYTENTIAL_LOG_DEBUG = os.environ.get("PYTENTIAL_LOG_DEBUG") - - -if PYTENTIAL_LOG_DEBUG is not None: +def _set_up_logging_from_environment(): import logging + import os from pytential.log import set_up_logging - set_up_logging(PYTENTIAL_LOG_DEBUG.split(":"), level=logging.DEBUG) + for level_name, level in ( + ("DEBUG", logging.DEBUG), + ("INFO", logging.INFO), + ("WARNING", logging.WARNING), + ("ERROR", logging.ERROR), + ("CRITICAL", logging.CRITICAL)): -PYTENTIAL_LOG_INFO = os.environ.get("PYTENTIAL_LOG_INFO") + pytential_log_var = os.environ.get("PYTENTIAL_LOG_%s" % level_name) + if pytential_log_var is not None: + set_up_logging(pytential_log_var.split(":"), level=level) -if PYTENTIAL_LOG_INFO is not None: - import logging - from pytential.log import set_up_logging - set_up_logging(PYTENTIAL_LOG_INFO.split(":"), level=logging.INFO) +_set_up_logging_from_environment() @memoize_on_first_arg