Source code for qibocal.config

"""Custom logger implemenation."""

import logging
import os

# Logging levels available here https://docs.python.org/3/library/logging.html#logging-levels
QIBOCAL_LOG_LEVEL = 10
if "QIBOCAL_LOG_LEVEL" in os.environ:  # pragma: no cover
    QIBOCAL_LOG_LEVEL = 10 * int(os.environ.get("QIBOCAL_LOG_LEVEL"))


[docs]def raise_error(exception, message=None, args=None): """Raise exception with logging error. Args: exception (Exception): python exception. message (str): the error message. """ log.error(message) if args: raise exception(message, args) raise exception(message)
# Configuration for logging mechanism
[docs]class CustomHandler(logging.StreamHandler): """Custom handler for logging algorithm.""" def __init__(self): super().__init__() self.FORMATS = None
[docs] def format(self, record): """Format the record with specific format.""" from qibocal import __version__ fmt = f"[Qibocal {__version__}|%(levelname)s|%(asctime)s]: %(message)s" grey = "\x1b[38;20m" green = "\x1b[92m" yellow = "\x1b[33;20m" red = "\x1b[31;20m" bold_red = "\x1b[31;1m" reset = "\x1b[0m" self.FORMATS = { logging.DEBUG: green + fmt + reset, logging.INFO: grey + fmt + reset, logging.WARNING: yellow + fmt + reset, logging.ERROR: red + fmt + reset, logging.CRITICAL: bold_red + fmt + reset, } log_fmt = self.FORMATS.get(record.levelno) return logging.Formatter(log_fmt, datefmt="%Y-%m-%d %H:%M:%S").format(record)
# allocate logger object log = logging.getLogger(__name__) log.setLevel(QIBOCAL_LOG_LEVEL) log.addHandler(CustomHandler())