Lagt till fler metoder. Sett till det är att root-loggaren som skapas vid instasieringen av denna singleton
This commit is contained in:
@@ -17,21 +17,40 @@ class GlobalState:
|
|||||||
if cls._instance is None:
|
if cls._instance is None:
|
||||||
cls._instance = super(GlobalState, cls).__new__(cls)
|
cls._instance = super(GlobalState, cls).__new__(cls)
|
||||||
cls._instance.log_level = 'INFO' # Default logging level
|
cls._instance.log_level = 'INFO' # Default logging level
|
||||||
cls._instance.logger = logging.getLogger(__name__) # Get logger for the caller module
|
cls._instance.logger = logging.getLogger() # Get root logger for the caller module
|
||||||
handler = logging.StreamHandler() # Or other handler (FileHandler for logs to file)
|
handler = logging.StreamHandler() # Or other handler (FileHandler for logs to file)
|
||||||
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
|
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
|
||||||
handler.setFormatter(formatter)
|
handler.setFormatter(formatter)
|
||||||
cls._instance.logger.addHandler(handler)
|
cls._instance.logger.addHandler(handler)
|
||||||
|
cls._instance.logger.setLevel(getattr(logging, cls._instance.log_level)) # Initialize root logger level
|
||||||
|
cls._instance.logger.info(" __new__(cls): Logger in GlobalState created: %s", cls._instance.logger)
|
||||||
return cls._instance
|
return cls._instance
|
||||||
|
|
||||||
def configure_logging(self, level=None):
|
def configure_logging(self, level=None):
|
||||||
"""Set up logging for the project."""
|
"""Set up logging for the project."""
|
||||||
if level is None:
|
if level is None:
|
||||||
level = self.log_level
|
level = self.log_level
|
||||||
|
# numeric_level = getattr(logging, level.upper()) # Convert string to numeric level
|
||||||
numeric_level = getattr(logging, level.upper()) # Convert string to numeric level
|
numeric_level = getattr(logging, level.upper()) # Convert string to numeric level
|
||||||
self.logger.setLevel(numeric_level)
|
self.logger.setLevel(numeric_level)
|
||||||
|
self.logger.debug(f"utils.py -- configure_logging(): effective log level is {level} which is {self.logger.getEffectiveLevel()}")
|
||||||
|
|
||||||
def set_log_level(self, level):
|
def set_log_level(self, level = 'INFO'):
|
||||||
"""Set the logging level."""
|
"""Set the logging level."""
|
||||||
self.log_level = level
|
self.log_level = level
|
||||||
self.configure_logging()
|
self.configure_logging()
|
||||||
|
|
||||||
|
def get_log_level(self):
|
||||||
|
"""Getter for log_level attribute."""
|
||||||
|
return self.log_level
|
||||||
|
|
||||||
|
def get_effective_log_level(self):
|
||||||
|
"""Getter for effective log level of loggerattribute."""
|
||||||
|
return self.logger.getEffectiveLevel()
|
||||||
|
|
||||||
|
def getLogger(self, module_name=None):
|
||||||
|
"""Return a logger based on the module name."""
|
||||||
|
if module_name is None:
|
||||||
|
module_name = __name__
|
||||||
|
logger = logging.getLogger(module_name)
|
||||||
|
return logger
|
||||||
Reference in New Issue
Block a user