Some checks failed
- Added @click.version_option decorator to main() in commands.py - Imported __version__ from loglens package - Resolves CI build failure: 'loglens --version' command not found
65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
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"
|