import logging
import os
from logging.handlers import SocketHandler, TimedRotatingFileHandler
[docs]def create_parent_logger(name: str) -> logging.Logger:
logger_type = os.environ.get('LOGGER', 'file').lower()
return getattr(LoggerGenerator, f"_create_{logger_type}_logger")(name)
[docs]class LoggerGenerator:
def __init__(self):
pass
@staticmethod
[docs] def _create_cutelog_logger(name: str) -> logging.Logger:
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
logger.propagate = False
socket_handler = SocketHandler('127.0.0.1', 19996)
socket_handler.setFormatter(logging.Formatter(
"%(asctime)s - %(levelname)s - %(name)s - %(message)s"))
logger.addHandler(socket_handler)
return logger
@staticmethod
[docs] def _create_file_logger(name: str) -> logging.Logger:
class FileLogger(logging.Logger):
def __init__(self, name, level=logging.NOTSET):
super().__init__(name=name, level=level)
def getChild(self, suffix: str) -> logging.Logger:
return self.create_file_logger('-'.join((self.name, suffix)))
@staticmethod
def create_file_logger(name: str) -> logging.Logger:
logger = FileLogger(name)
logger.setLevel(logging.DEBUG)
logger.propagate = False
log_file = os.environ.get("LOGS_FOLDER_PATH",
"pipert/utils/log_files") + "/" + name + ".log"
file_handler = TimedRotatingFileHandler(log_file, when='midnight')
file_handler.setFormatter(logging.Formatter(
"%(asctime)s - %(levelname)s - %(name)s - %(message)s"))
logger.addHandler(file_handler)
return logger
return FileLogger.create_file_logger(name)