from typing import Optional class SeverityClassifier: """Classify log entry severity based on content and level.""" def classify(self, message: str, level: Optional[str]) -> str: """Classify the severity of a log entry.""" if level: level_lower = level.lower() if level_lower in ("critical", "fatal", "emerg"): return "critical" elif level_lower in ("error", "err", "erro"): return "error" elif level_lower in ("warning", "warn"): return "warning" elif level_lower in ("info", "informational"): return "info" elif level_lower in ("debug", "dbg", "trace"): return "debug" message_lower = message.lower() critical_keywords = [ "fatal", "panic", "crash", "died", "terminated", "segfault", "out of memory", "no space left", ] error_keywords = [ "error", "fail", "exception", "invalid", "cannot", "unable", "timeout", "refused", "rejected", ] warning_keywords = ["warning", "warn", "deprecated", "slow", "high latency"] debug_keywords = ["debug", "trace", "verbose", "dump", "print"] for keyword in critical_keywords: if keyword in message_lower: return "critical" for keyword in error_keywords: if keyword in message_lower: return "error" for keyword in warning_keywords: if keyword in message_lower: return "warning" for keyword in debug_keywords: if keyword in message_lower: return "debug" return "info"