Update to v1.4.2
Feat: tray icon now shows API/watcher health rather than unit ages. unit submenu removed, now handled by recieving software. Chore: remove old unneeded code from deprecated features (console colorization, Missing/pending age limits)
This commit is contained in:
@@ -68,7 +68,6 @@ def load_config(path: str) -> Dict[str, Any]:
|
||||
"Series3Watcher", "agent_logs", "series3_watcher.log"
|
||||
)),
|
||||
"LOG_RETENTION_DAYS": get_int("LOG_RETENTION_DAYS", 30),
|
||||
"COLORIZE": get_bool("COLORIZE", False), # Win7 default off
|
||||
"MLG_HEADER_BYTES": max(256, min(get_int("MLG_HEADER_BYTES", 2048), 65536)),
|
||||
"RECENT_WARN_DAYS": get_int("RECENT_WARN_DAYS", 30),
|
||||
"MAX_EVENT_AGE_DAYS": get_int("MAX_EVENT_AGE_DAYS", 365),
|
||||
@@ -82,10 +81,6 @@ def load_config(path: str) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
# --------------- ANSI helpers ---------------
|
||||
def ansi(enabled: bool, code: str) -> str:
|
||||
return code if enabled else ""
|
||||
|
||||
|
||||
# --------------- Logging --------------------
|
||||
def log_message(path: str, enabled: bool, msg: str) -> None:
|
||||
@@ -310,9 +305,11 @@ def run_watcher(state: Dict[str, Any], stop_event: threading.Event) -> None:
|
||||
Main watcher loop. Runs in a background thread when launched from the tray.
|
||||
|
||||
state dict is written on every scan cycle:
|
||||
state["status"] — "ok" | "pending" | "missing" | "error" | "starting"
|
||||
state["units"] — list of dicts: {uid, status, age_hours, last, fname}
|
||||
state["status"] — "running" | "error" | "starting"
|
||||
state["api_status"] — "ok" | "fail" | "disabled"
|
||||
state["units"] — list of dicts: {uid, age_hours, last, fname}
|
||||
state["last_scan"] — datetime of last successful scan (or None)
|
||||
state["last_api"] — datetime of last successful API POST (or None)
|
||||
state["last_error"] — last error string (or None)
|
||||
state["log_dir"] — directory containing the log file
|
||||
state["cfg"] — loaded config dict
|
||||
@@ -345,21 +342,13 @@ def run_watcher(state: Dict[str, Any], stop_event: threading.Event) -> None:
|
||||
|
||||
WATCH_PATH = cfg["WATCH_PATH"]
|
||||
SCAN_INTERVAL = int(cfg["SCAN_INTERVAL"])
|
||||
OK_HOURS = float(cfg["OK_HOURS"])
|
||||
MISSING_HOURS = float(cfg["MISSING_HOURS"])
|
||||
ENABLE_LOGGING = bool(cfg["ENABLE_LOGGING"])
|
||||
LOG_FILE = cfg["LOG_FILE"]
|
||||
LOG_RETENTION_DAYS = int(cfg["LOG_RETENTION_DAYS"])
|
||||
COLORIZE = bool(cfg["COLORIZE"])
|
||||
MLG_HEADER_BYTES = int(cfg["MLG_HEADER_BYTES"])
|
||||
RECENT_WARN_DAYS = int(cfg["RECENT_WARN_DAYS"])
|
||||
MAX_EVENT_AGE_DAYS = int(cfg["MAX_EVENT_AGE_DAYS"])
|
||||
|
||||
C_OK = ansi(COLORIZE, "\033[92m")
|
||||
C_PEN = ansi(COLORIZE, "\033[93m")
|
||||
C_MIS = ansi(COLORIZE, "\033[91m")
|
||||
C_RST = ansi(COLORIZE, "\033[0m")
|
||||
|
||||
print(
|
||||
"[CFG] WATCH_PATH={} SCAN_INTERVAL={}s MAX_EVENT_AGE_DAYS={} API_ENABLED={}".format(
|
||||
WATCH_PATH, SCAN_INTERVAL, MAX_EVENT_AGE_DAYS, bool(cfg.get("API_ENABLED", False))
|
||||
|
||||
Reference in New Issue
Block a user