Skip to content

Commit

Permalink
Add threading lock to allow multiprocesses logging
Browse files Browse the repository at this point in the history
  • Loading branch information
kaylode committed Sep 12, 2024
1 parent 3717229 commit 7a4f371
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions theseus/base/utilities/loggers/observer.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,29 +58,32 @@ class LoggerObserver(object):
SUCCESS = "SUCCESS"

instances = {}
_lock = threading.Lock()

def __new__(cls, name, *args, **kwargs):
if name in LoggerObserver.instances.keys():
return LoggerObserver.instances[name]
def __new__(cls, name=None, *args, **kwargs):
with cls._lock:
if name is None:
name = str(os.getpid())
if name in LoggerObserver.instances.keys():
return LoggerObserver.instances[name]

return object.__new__(cls, *args, **kwargs)
return object.__new__(cls, *args, **kwargs)

def __init__(self, name) -> None:
from .stdout_logger import StdoutLogger # to circumvent circular import

self.subscriber = []
self.name = name

# Init with a stdout logger
logger = StdoutLogger(__name__, debug=True)
logger = StdoutLogger(debug=True)
self.subscribe(logger)

LoggerObserver.instances[name] = self

def __del__(self):
for subcriber in self.subscriber:
del subcriber
LoggerObserver.instances.pop(self.name)
if self.name in LoggerObserver.instances.keys():
LoggerObserver.instances.pop(self.name)

@classmethod
def getLogger(cls, name):
Expand Down Expand Up @@ -127,7 +130,7 @@ def log(self, logs: List[Dict]):
if log_type == LoggerObserver.HTML:
subscriber.log_html(tag=tag, value=value, **kwargs)

def text(self, value, level):
def text(self, value, level=logging.INFO):
"""
Text logging
"""
Expand Down

0 comments on commit 7a4f371

Please sign in to comment.