Home | History | Annotate | Download | only in support
      1 """
      2 Logging support for make_layout.
      3 """
      4 
      5 __author__ = "Steve Dower <steve.dower (at] python.org>"
      6 __version__ = "3.8"
      7 
      8 import logging
      9 import sys
     10 
     11 __all__ = []
     12 
     13 LOG = None
     14 HAS_ERROR = False
     15 
     16 
     17 def public(f):
     18     __all__.append(f.__name__)
     19     return f
     20 
     21 
     22 @public
     23 def configure_logger(ns):
     24     global LOG
     25     if LOG:
     26         return
     27 
     28     LOG = logging.getLogger("make_layout")
     29     LOG.level = logging.DEBUG
     30 
     31     if ns.v:
     32         s_level = max(logging.ERROR - ns.v * 10, logging.DEBUG)
     33         f_level = max(logging.WARNING - ns.v * 10, logging.DEBUG)
     34     else:
     35         s_level = logging.ERROR
     36         f_level = logging.INFO
     37 
     38     handler = logging.StreamHandler(sys.stdout)
     39     handler.setFormatter(logging.Formatter("{levelname:8s} {message}", style="{"))
     40     handler.setLevel(s_level)
     41     LOG.addHandler(handler)
     42 
     43     if ns.log:
     44         handler = logging.FileHandler(ns.log, encoding="utf-8", delay=True)
     45         handler.setFormatter(
     46             logging.Formatter("[{asctime}]{levelname:8s}: {message}", style="{")
     47         )
     48         handler.setLevel(f_level)
     49         LOG.addHandler(handler)
     50 
     51 
     52 class BraceMessage:
     53     def __init__(self, fmt, *args, **kwargs):
     54         self.fmt = fmt
     55         self.args = args
     56         self.kwargs = kwargs
     57 
     58     def __str__(self):
     59         return self.fmt.format(*self.args, **self.kwargs)
     60 
     61 
     62 @public
     63 def log_debug(msg, *args, **kwargs):
     64     return LOG.debug(BraceMessage(msg, *args, **kwargs))
     65 
     66 
     67 @public
     68 def log_info(msg, *args, **kwargs):
     69     return LOG.info(BraceMessage(msg, *args, **kwargs))
     70 
     71 
     72 @public
     73 def log_warning(msg, *args, **kwargs):
     74     return LOG.warning(BraceMessage(msg, *args, **kwargs))
     75 
     76 
     77 @public
     78 def log_error(msg, *args, **kwargs):
     79     global HAS_ERROR
     80     HAS_ERROR = True
     81     return LOG.error(BraceMessage(msg, *args, **kwargs))
     82 
     83 
     84 @public
     85 def log_exception(msg, *args, **kwargs):
     86     global HAS_ERROR
     87     HAS_ERROR = True
     88     return LOG.exception(BraceMessage(msg, *args, **kwargs))
     89 
     90 
     91 @public
     92 def error_was_logged():
     93     return HAS_ERROR
     94