Source code for betty.logging.logger_base
import sys
import abc
import logging
_logger = None
[docs]def get_logger():
"""
Get global logger.
"""
global _logger
if _logger:
return _logger
logger = logging.getLogger("betty")
log_format = logging.Formatter(
"[%(asctime)s] [%(levelname)s] %(message)s", "%Y-%m-%d %H:%M:%S"
)
logger.propagate = False
logger.setLevel(logging.INFO)
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(logging.INFO)
ch.setFormatter(log_format)
logger.addHandler(ch)
_logger = logger
return _logger
[docs]class LoggerBase:
[docs] def log(self, stats, tag=None, step=None):
"""
Log metrics/stats to a visualization logger (e.g. tensorboard, wandb)
:param stats: Dictoinary of values and their names to be recorded
:type stats: dict
:param tag: Data identifier
:type tag: str, optional
:param step: step value associated with ``stats`` to record
:type step: int, optional
"""
return
[docs] @staticmethod
def debug(msg, *args, **kwargs):
"""
Logs a message with level DEBUG on the global logger
:param msg: debugg message
:type msg: str
"""
get_logger().debug(msg, *args, **kwargs)
[docs] @staticmethod
def info(msg, *args, **kwargs):
"""
Logs a message with level INFO on the global logger
:param msg: info message
:type msg: str
"""
get_logger().info(msg, *args, **kwargs)
[docs] @staticmethod
def warning(msg, *args, **kwargs):
"""
Logs a message with level WARNING on the global logger
:param msg: warning message
:type msg: str
"""
get_logger().warning(msg, *args, **kwargs)
[docs] @staticmethod
def error(msg, *args, **kwargs):
"""
Logs a message with level ERROR on the global logger
:param msg: error message
:type msg: str
"""
get_logger().error(msg, *args, **kwargs)