Source code for anim.log
import logging
logger = logging.getLogger(__name__)
[docs]
def create_logger(name="anim", level="DEBUG", filename=None):
"""build a logger with name and level wanted
can be call again to change level of logger already initialized
Parameters
----------
name : str, optional
name of the logger, by default "anim"
level : str or int, optional
level of the logger, by default "WARNING"
filename : str or None, optional
if specified, log everything in a filename with debug level
Returns
-------
logging.Logger
logger created
"""
# set a format for console use
format_log = "%(asctime)s - %(levelname)-10s %(name)s.%(funcName)s : %(message)s"
_logger = logging.getLogger(name)
level_name = logging.getLevelName(level) if isinstance(level, int) else level
# si le logger existe déjà, on ne fait rien
if len(_logger.handlers) > 0:
handler = _logger.handlers[0]
if handler.level != level:
handler.setLevel(level)
_logger.info("changed logging level to %s", level_name)
return _logger
# set up logging to console
console = logging.StreamHandler()
console.setFormatter(ColoredFormatter(format_log))
console.setLevel(level)
_logger.addHandler(console)
if filename is not None:
filehandler = logging.FileHandler(
filename,
)
filehandler.setFormatter(logging.Formatter(format_log))
filehandler.setLevel(logging.DEBUG)
_logger.addHandler(filehandler)
_logger.setLevel(logging.DEBUG)
_logger.debug("logger '%s' activated at level %s", name, level_name)
return _logger