Skip to content

Commit

Permalink
Implement log observer manager
Browse files Browse the repository at this point in the history
  • Loading branch information
chintal committed Jul 4, 2021
1 parent 031eed0 commit 7b738fa
Showing 1 changed file with 30 additions and 12 deletions.
42 changes: 30 additions & 12 deletions src/tendril/asynchronous/utils/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,30 @@
from twisted.logger import textFileLogObserver


class TwistedLogObserverManager(object):
def __init__(self):
self._observers = {}

@property
def observers(self):
return self._observers

def init(self):
for observer in globalLogPublisher._observers:
print("Removing pre-installed log observer: ", observer)
globalLogPublisher.removeObserver(observer)

def add_observer(self, name, observer):
if name not in self._observers.keys():
self._observers[name] = observer
print("Installing log observer: ", observer)
globalLogPublisher.addObserver(observer)


manager = TwistedLogObserverManager()
manager.init()


class TwistedLoggerMixin(object):
def __init__(self, *args, **kwargs):
super(TwistedLoggerMixin, self).__init__(*args, **kwargs)
Expand All @@ -32,34 +56,28 @@ def level(self, value):

def observers(self):
rv = []
stdout_level = logger.LogLevel.info
stdout_level = self.level
if self.log_file:
rv.append(
FilteringLogObserver(
('file', FilteringLogObserver(
textFileLogObserver(io.open(self.log_file, 'a')),
predicates=[LogLevelFilterPredicate(logger.LogLevel.info)]
),
))
)
stdout_level = logger.LogLevel.warn
rv.append(
FilteringLogObserver(
('stdout', FilteringLogObserver(
textFileLogObserver(sys.stdout),
predicates=[LogLevelFilterPredicate(stdout_level)]
),
))
)
return rv

def log_init(self):
# TODO Fix what this does when you have multiple objects
# calling log_init()
for observer in globalLogPublisher._observers:
print("Removing pre-installed log observer: ", observer)
globalLogPublisher.removeObserver(observer)
for observer in self.observers():
print(" Installing log observer: ", observer)
globalLogPublisher.addObserver(observer)
for observer in globalLogPublisher._observers:
print(" Using log observer: ", observer)
manager.add_observer(*observer)

@property
def log(self):
Expand Down

0 comments on commit 7b738fa

Please sign in to comment.