diff options
author | Steve Dower <steve.dower@microsoft.com> | 2018-12-11 02:52:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-11 02:52:57 (GMT) |
commit | 0cd6391fd890368ea1743dac50c366b42f2fd126 (patch) | |
tree | 1e2d8fd6c85a08477d3eb4082badd9a50386e63e /PC/layout/support/logging.py | |
parent | 1c3de541e64f75046b20cdd27bada1557e550bcd (diff) | |
download | cpython-0cd6391fd890368ea1743dac50c366b42f2fd126.zip cpython-0cd6391fd890368ea1743dac50c366b42f2fd126.tar.gz cpython-0cd6391fd890368ea1743dac50c366b42f2fd126.tar.bz2 |
bpo-34977: Add Windows App Store package (GH-11027)
Also adds the PC/layout script for generating layouts on Windows.
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 |