from pydantic_settings import BaseSettings, SettingsConfigDict from loguru import logger class LogConfig(BaseSettings): """Logging configuration to be set for the server with LOG PREFIX in env variables""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) logger.add( self.FILE_NAME, level=self.LEVEL, rotation=self.FILE_SIZE, retention=self.FILE_COUNT, # compression=self.FILE_AGE, ) model_config = SettingsConfigDict( env_prefix="LOG_", env_file=".env", env_file_encoding="utf-8", extra="ignore", ) LEVEL: str = "DEBUG" FILE_NAME: str = "app.log" FILE_SIZE: int = 10485760 # 10MB FILE_COUNT: int = 3 FILE_AGE: int = 3600 # 1 hour def get_log_level(self) -> int: return logger.level(self.LEVEL) log_config = LogConfig()