diff options
author | Steve Dower <steve.dower@microsoft.com> | 2018-12-07 05:09:53 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-07 05:09:53 (GMT) |
commit | 253209149389e6793a052034e1f2d97691086f18 (patch) | |
tree | 21ebd5df1c2ce59a2d71a5d28ea879be7ad835a4 /PC/layout/support/logging.py | |
parent | 72c71956cade606bd5500cf76d4d7c1d50a7ccae (diff) | |
download | cpython-253209149389e6793a052034e1f2d97691086f18.zip cpython-253209149389e6793a052034e1f2d97691086f18.tar.gz cpython-253209149389e6793a052034e1f2d97691086f18.tar.bz2 |
[3.7] bpo-34977: Add Windows App Store package (GH-10245)
Diffstat (limited to 'PC/layout/support/logging.py')
-rw-r--r-- | PC/layout/support/logging.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/PC/layout/support/logging.py b/PC/layout/support/logging.py new file mode 100644 index 0000000..30869b9 --- /dev/null +++ b/PC/layout/support/logging.py @@ -0,0 +1,93 @@ +""" +Logging support for make_layout. +""" + +__author__ = "Steve Dower <steve.dower@python.org>" +__version__ = "3.8" + +import logging +import sys + +__all__ = [] + +LOG = None +HAS_ERROR = False + + +def public(f): + __all__.append(f.__name__) + return f + + +@public +def configure_logger(ns): + global LOG + if LOG: + return + + LOG = logging.getLogger("make_layout") + LOG.level = logging.DEBUG + + if ns.v: + s_level = max(logging.ERROR - ns.v * 10, logging.DEBUG) + f_level = max(logging.WARNING - ns.v * 10, logging.DEBUG) + else: + s_level = logging.ERROR + f_level = logging.INFO + + handler = logging.StreamHandler(sys.stdout) + handler.setFormatter(logging.Formatter("{levelname:8s} {message}", style="{")) + handler.setLevel(s_level) + LOG.addHandler(handler) + + if ns.log: + handler = logging.FileHandler(ns.log, encoding="utf-8", delay=True) + handler.setFormatter( + logging.Formatter("[{asctime}]{levelname:8s}: {message}", style="{") + ) + handler.setLevel(f_level) + LOG.addHandler(handler) + + +class BraceMessage: + def __init__(self, fmt, *args, **kwargs): + self.fmt = fmt + self.args = args + self.kwargs = kwargs + + def __str__(self): + return self.fmt.format(*self.args, **self.kwargs) + + +@public +def log_debug(msg, *args, **kwargs): + return LOG.debug(BraceMessage(msg, *args, **kwargs)) + + +@public +def log_info(msg, *args, **kwargs): + return LOG.info(BraceMessage(msg, *args, **kwargs)) + + +@public +def log_warning(msg, *args, **kwargs): + return LOG.warning(BraceMessage(msg, *args, **kwargs)) + + +@public +def log_error(msg, *args, **kwargs): + global HAS_ERROR + HAS_ERROR = True + return LOG.error(BraceMessage(msg, *args, **kwargs)) + + +@public +def log_exception(msg, *args, **kwargs): + global HAS_ERROR + HAS_ERROR = True + return LOG.exception(BraceMessage(msg, *args, **kwargs)) + + +@public +def error_was_logged(): + return HAS_ERROR |