Source code for nlp_data_py.commons.utils.logging

import logging
import sys
FORMATTER = logging.Formatter("%(asctime)s%(name)s%(funcName)s - %(levelname)s%(message)s")


[docs]class Logging: """Generic Logging with logging module. This class has a property: DEFAULT_LEVEL. which is a Log Level variable. Global level will be used when no specific log levels are specified with get_logger. Default global level is DEBUG. This can be overridden """ DEFAULT_LEVEL = logging.WARNING DEFAULT_HANDLERS = [logging.StreamHandler] DEFAULT_STREAM = sys.stdout
[docs] @staticmethod def get_logger(name: str, level=None, propagate=False, handlers=DEFAULT_HANDLERS, args=[[DEFAULT_STREAM]]): """ Returns a logger of the name provided. Args: name (str): Name of the logger to be created. level (int): Level at which logs should be written. (same as logging.Levels) default value is None. If None, Logging.global_level be used propagate (Boolean): Propagate logs to parent. Default value is False handlers (List of functions): Function that returns a logging handler. These functions will be called with logger.addHandler. default value is [logging.StreamHandler]. args (List[List]): List of parameters for the handlers. It should match with the number of handlers. If the function takes no parameters leave an empty list. default value: empty list of empty list. default value is args=[[DEFAULT_STREAM]] Returns: logger """ logger = logging.getLogger(name) if level is None: logger.setLevel(Logging.DEFAULT_LEVEL) else: logger.setLevel(level) for func, arg in zip(handlers, args): logger.addHandler(func(*arg)) for handler in logger.handlers: handler.setFormatter(FORMATTER) logger.propagate = propagate return logger