Singleton example:
class LogProvider:
logger = None
_lock = threading.Lock()
@staticmethod
def _initialize_logger():
root_dir = get_root_dir()
log_dir = root_dir + "/" + (getenv("LOGDIR") or "logs")
log_path = f"{log_dir}/Log.txt"
if not exists(log_dir):
mkdir(log_dir)
format_ = "{asctime} {levelname} {message}"
basicConfig(filename=log_path, level=DEBUG, format=format_, style="{")
return getLogger()
def __new__(cls):
if cls.logger is None:
with cls._lock:
if cls.logger is None:
cls.logger = cls._initialize_logger()
return cls.logger