diff --git a/tfw/components/process_management/process_log_handler.py b/tfw/components/process_management/process_log_handler.py index a61f806..8696296 100644 --- a/tfw/components/process_management/process_log_handler.py +++ b/tfw/components/process_management/process_log_handler.py @@ -16,17 +16,20 @@ class ProcessLogHandler: self._initial_log_tail = log_tail self.command_handlers = { - 'process.log.set': self.handle_set + 'process.log.set': self.handle_set, + 'process.log.start': self.handle_start, + 'process.log.stop': self.handle_stop } def start(self): - self._monitor = LogInotifyObserver( - connector=self.connector, - process_name=self.process_name, - supervisor_uri=self._supervisor_uri, - log_tail=self._initial_log_tail - ) - self._monitor.start() + if not self._monitor: + self._monitor = LogInotifyObserver( + connector=self.connector, + process_name=self.process_name, + supervisor_uri=self._supervisor_uri, + log_tail=self._initial_log_tail + ) + self._monitor.start() def handle_event(self, message, _): try: @@ -40,5 +43,16 @@ class ProcessLogHandler: if data.get('tail'): self._monitor.log_tail = data['tail'] + def handle_start(self, _): + self.start() + + def handle_stop(self, _): + self._stop_monitor() + + def _stop_monitor(self): + if self._monitor: + self._monitor.stop() + self._monitor = None + def cleanup(self): - self._monitor.stop() + self._stop_monitor()