diff --git a/loglens/parsers/base.py b/loglens/parsers/base.py index 0dabeb9..46b4c3b 100644 --- a/loglens/parsers/base.py +++ b/loglens/parsers/base.py @@ -1,14 +1,15 @@ -"""Base parser class and data structures.""" +'''Base parser class and data structures.''' from abc import ABC, abstractmethod from dataclasses import dataclass, field from datetime import datetime -from typing import Any, Dict, List, Optional from enum import Enum +from typing import Any, Optional class LogFormat(Enum): - """Supported log formats.""" + '''Supported log formats.''' + JSON = "json" SYSLOG = "syslog" APACHE = "apache" @@ -17,7 +18,8 @@ class LogFormat(Enum): @dataclass class ParsedLogEntry: - """Represents a parsed log entry.""" + '''Represents a parsed log entry.''' + raw_line: str timestamp: Optional[datetime] = None level: Optional[str] = None @@ -27,12 +29,12 @@ class ParsedLogEntry: facility: Optional[str] = None severity: Optional[str] = None logger: Optional[str] = None - extra: Dict[str, Any] = field(default_factory=dict) + extra: dict[str, Any] = field(default_factory=dict) line_number: int = 0 error_pattern: Optional[str] = None - def to_dict(self) -> Dict[str, Any]: - """Convert to dictionary.""" + def to_dict(self) -> dict[str, Any]: + '''Convert to dictionary.''' result = { "raw_line": self.raw_line, "message": self.message, @@ -60,22 +62,22 @@ class ParsedLogEntry: class LogParser(ABC): - """Abstract base class for log parsers.""" + '''Abstract base class for log parsers.''' format_name: str = "base" @abstractmethod def parse(self, line: str, line_number: int = 0) -> Optional[ParsedLogEntry]: - """Parse a single log line.""" + '''Parse a single log line.''' pass @abstractmethod def can_parse(self, line: str) -> bool: - """Check if this parser can handle the given line.""" + '''Check if this parser can handle the given line.''' pass - def parse_batch(self, lines: List[str]) -> List[ParsedLogEntry]: - """Parse multiple lines.""" + def parse_batch(self, lines: list[str]) -> list[ParsedLogEntry]: + '''Parse multiple lines.''' results = [] for i, line in enumerate(lines, 1): try: @@ -83,9 +85,5 @@ class LogParser(ABC): if entry: results.append(entry) except Exception: - results.append(ParsedLogEntry( - raw_line=line, - message="Parse error", - line_number=i - )) + results.append(ParsedLogEntry(raw_line=line, message="Parse error", line_number=i)) return results