lmops
1from contextlib import contextmanager2import logging3
4@contextmanager
5def all_logging_disabled(highest_level=logging.CRITICAL):6"""7A context manager that will prevent any logging messages
8triggered during the body from being processed.
9:param highest_level: the maximum logging level in use.
10This would only need to be changed if a custom level greater than CRITICAL
11is defined.
12"""
13# two kind-of hacks here:14# * can't get the highest logging level in effect => delegate to the user15# * can't get the current module-level override => use an undocumented16# (but non-private!) interface17
18previous_level = logging.root.manager.disable19
20logging.disable(highest_level)21
22try:23yield24finally:25logging.disable(previous_level)