1"""
2This sub is used to set up logging for pop projects and injects logging
3options into conf making it easy to add robust logging
4"""
5import logging
6
7
8def __init__(hub):
9    """
10    Set up variables used by the log subsystem
11    """
12    logging.addLevelName(5, "TRACE")
13    hub.log.LEVEL = {
14        "notset": logging.NOTSET,
15        "trace": 5,
16        "debug": logging.DEBUG,
17        "info": logging.INFO,
18        "warn": logging.WARN,
19        "warning": logging.WARNING,
20        "error": logging.ERROR,
21        "fatal": logging.FATAL,
22        "critical": logging.CRITICAL,
23    }
24    log = logging.getLogger(__name__)
25
26    # These should be overwritten by the integrated logger, but here's a contingency
27    hub.log.INT_LEVEL = log.getEffectiveLevel()
28    hub.log.log = log.log
29    hub.log.trace = lambda msg, *args, **kwargs: log.log(5, msg, *args, **kwargs)
30    hub.log.debug = log.debug
31    hub.log.info = log.info
32    hub.log.critical = log.critical
33    hub.log.warning = log.warning
34    hub.log.error = log.error
35