Spaces:
Paused
Paused
| import logging | |
| import os | |
| import socket | |
| import sys | |
| from logging.handlers import TimedRotatingFileHandler | |
| from pathlib import Path | |
| from src.config import settings | |
| _FORMATTER = logging.Formatter( | |
| "%(asctime)s — [%(threadName)s] - %(name)s - %(filename)s.%(funcName)s(%(lineno)d) - %(levelname)s - %(message)s") | |
| LOGS_MODEL_BASE_PATH = Path(os.environ.get('model_logs_base_path', os.getcwd())) | |
| LOG_FILE = f"tts_inference_" + socket.gethostname() + ".log" | |
| _FILE_LOGGER_HANDLER = None | |
| _CONSOLE_LOGGER_HANDLER = None | |
| _LOGGING_DEBUG = settings.log_level.upper() | |
| def get_console_handler(): | |
| global _CONSOLE_LOGGER_HANDLER | |
| if _CONSOLE_LOGGER_HANDLER is None: | |
| _CONSOLE_LOGGER_HANDLER = logging.StreamHandler(sys.stdout) | |
| _CONSOLE_LOGGER_HANDLER.setFormatter(_FORMATTER) | |
| return _CONSOLE_LOGGER_HANDLER | |
| def get_file_handler(): | |
| global _FILE_LOGGER_HANDLER | |
| if _FILE_LOGGER_HANDLER is None: | |
| if not os.path.exists(LOGS_MODEL_BASE_PATH): | |
| os.makedirs(LOGS_MODEL_BASE_PATH) | |
| _FILE_LOGGER_HANDLER = TimedRotatingFileHandler(LOGS_MODEL_BASE_PATH / LOG_FILE, | |
| when='midnight', | |
| backupCount=30) | |
| _FILE_LOGGER_HANDLER.setFormatter(_FORMATTER) | |
| return _FILE_LOGGER_HANDLER | |
| def get_logger(logger_name): | |
| logger = logging.getLogger(logger_name) | |
| logger.setLevel(_LOGGING_DEBUG) # better to have too much log than not enough | |
| logger.addHandler(get_console_handler()) | |
| logger.addHandler(get_file_handler()) | |
| # with this pattern, it's rarely necessary to propagate the error up to parent | |
| logger.propagate = False | |
| return logger | |