Source code for optimus.logs

"""
Logging
=======

Optimus makes usage of logging during its processes to inform user about
what it is doing or errors that occured.

To be more readable, its logger is configured to be colored using
``colorlog`` package.

"""
import logging

import colorlog


[docs]def set_loggers_level(names, level=logging.CRITICAL): """ Set a log level on multiple loggers. Arguments: names (list): A list of logger names to set level. Keyword Arguments: level (integer): Logging level to set on all given logger names. Default to value from ``logging.CRITICAL``. """ for item in names: logging.getLogger(item).setLevel(level)
[docs]def init_logger(level, printout=True): """ Initialize app logger to configure its level/handler/formatter/etc.. Arguments: level (str): Level name (``debug``, ``info``, etc..). Keyword Arguments: printout (bool): If False, logs will never be outputed. Returns: logging.Logger: Application logger. """ root_logger = logging.getLogger("optimus") root_logger.setLevel(level) # Redirect outputs to the void space, mostly for usage within unittests if not printout: from io import StringIO dummystream = StringIO() handler = logging.StreamHandler(dummystream) # Standard output with colored messages else: handler = logging.StreamHandler() handler.setFormatter( colorlog.ColoredFormatter( "%(asctime)s - %(log_color)s%(message)s", datefmt="%H:%M:%S" ) ) root_logger.addHandler(handler) return root_logger