Module deeporigin.src.utilities.logging
Classes
class LogLevel (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Expand source code
class LogLevel(enum.Enum): DEBUG = 1 INFO = 2 WARNING = 3 ERROR = 4
An enumeration.
Ancestors
- enum.Enum
Class variables
var DEBUG
var ERROR
var INFO
var WARNING
class Logger (log_level, log_dest)
-
Expand source code
class Logger: def __init__(self, log_level, log_dest): self.level = self.str_to_loglevel(log_level) self.file = open(log_dest, "a") if isinstance(log_dest, str) else log_dest if log_dest else sys.stdout self.lock = threading.Lock() self.depth = 0 def log(self, level, message, depth=None): if self.level.value <= level.value: if depth is None: depth = self.depth indent = " " * depth # Using two spaces per depth level for indentation log_entry = f"{indent}: {message}" with self.lock: print(log_entry, file=self.file) self.file.flush() def log_info(self, message, depth=None): self.log(LogLevel.INFO, message, depth) def log_warning(self, message, depth=None): self.log(LogLevel.WARNING, message, depth) def log_error(self, message, depth=None): self.log(LogLevel.ERROR, message, depth) def log_debug(self, message, depth=None): self.log(LogLevel.DEBUG, message, depth) def str_to_loglevel(self, level_str): try: return LogLevel[level_str] except KeyError: raise ValueError("Invalid log level: {}".format(level_str)) def close(self): self.file.close() def add_depth(self): self.depth += 1 def sub_depth(self): if self.depth > 0: self.depth -= 1 def get_current_date(self): cur_date = datetime.datetime.now() return cur_date.strftime("%Y-%m-%d %H:%M:%S") def get_state_info(self): d = self.get_current_date() return "date={}".format(d)
Methods
def add_depth(self)
-
Expand source code
def add_depth(self): self.depth += 1
def close(self)
-
Expand source code
def close(self): self.file.close()
def get_current_date(self)
-
Expand source code
def get_current_date(self): cur_date = datetime.datetime.now() return cur_date.strftime("%Y-%m-%d %H:%M:%S")
def get_state_info(self)
-
Expand source code
def get_state_info(self): d = self.get_current_date() return "date={}".format(d)
def log(self, level, message, depth=None)
-
Expand source code
def log(self, level, message, depth=None): if self.level.value <= level.value: if depth is None: depth = self.depth indent = " " * depth # Using two spaces per depth level for indentation log_entry = f"{indent}: {message}" with self.lock: print(log_entry, file=self.file) self.file.flush()
def log_debug(self, message, depth=None)
-
Expand source code
def log_debug(self, message, depth=None): self.log(LogLevel.DEBUG, message, depth)
def log_error(self, message, depth=None)
-
Expand source code
def log_error(self, message, depth=None): self.log(LogLevel.ERROR, message, depth)
def log_info(self, message, depth=None)
-
Expand source code
def log_info(self, message, depth=None): self.log(LogLevel.INFO, message, depth)
def log_warning(self, message, depth=None)
-
Expand source code
def log_warning(self, message, depth=None): self.log(LogLevel.WARNING, message, depth)
def str_to_loglevel(self, level_str)
-
Expand source code
def str_to_loglevel(self, level_str): try: return LogLevel[level_str] except KeyError: raise ValueError("Invalid log level: {}".format(level_str))
def sub_depth(self)
-
Expand source code
def sub_depth(self): if self.depth > 0: self.depth -= 1