upload
This commit is contained in:
54
modules/base.py
Normal file
54
modules/base.py
Normal file
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
Bazowa klasa dla modułów monitorowania logów
|
||||
"""
|
||||
|
||||
import logging
|
||||
import time
|
||||
import threading
|
||||
|
||||
|
||||
class LogModule:
|
||||
"""Bazowa klasa dla modułów monitorowania"""
|
||||
|
||||
def __init__(self, config, daemon):
|
||||
"""
|
||||
Args:
|
||||
config: ConfigParser object z konfiguracją
|
||||
daemon: Referencja do głównego demona
|
||||
"""
|
||||
self.config = config
|
||||
self.daemon = daemon
|
||||
self.logger = logging.getLogger(self.__class__.__name__)
|
||||
self.running = False
|
||||
self.thread = None
|
||||
|
||||
def start(self):
|
||||
"""Uruchamia moduł w osobnym wątku"""
|
||||
if self.running:
|
||||
self.logger.warning("Module already running")
|
||||
return
|
||||
|
||||
self.running = True
|
||||
self.thread = threading.Thread(target=self._run, daemon=True)
|
||||
self.thread.start()
|
||||
self.logger.info(f"{self.__class__.__name__} started")
|
||||
|
||||
def stop(self):
|
||||
"""Zatrzymuje moduł"""
|
||||
self.running = False
|
||||
if self.thread and self.thread.is_alive():
|
||||
self.thread.join(timeout=5)
|
||||
self.logger.info(f"{self.__class__.__name__} stopped")
|
||||
|
||||
def _run(self):
|
||||
"""Główna pętla modułu - do nadpisania w klasach potomnych"""
|
||||
raise NotImplementedError("Subclasses must implement _run()")
|
||||
|
||||
def process_line(self, line):
|
||||
"""
|
||||
Przetwarza pojedynczą linię logu
|
||||
|
||||
Args:
|
||||
line: Linia tekstu z logu
|
||||
"""
|
||||
raise NotImplementedError("Subclasses must implement process_line()")
|
||||
Reference in New Issue
Block a user