Files
loglens-cli/loglens/parsers/base.py
7000pctAUTO 7d2a543e6e
Some checks failed
CI / test (3.10) (push) Has started running
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.9) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / build (push) Has been cancelled
fix: add --version option to Click CLI group
- Added @click.version_option decorator to main() in commands.py
- Imported __version__ from loglens package
- Resolves CI build failure: 'loglens --version' command not found
2026-02-02 09:25:12 +00:00

54 lines
1.2 KiB
Python

from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
from typing import Any, Optional
class LogFormat(Enum):
"""Supported log formats."""
JSON = "json"
SYSLOG = "syslog"
APACHE = "apache"
RAW = "raw"
@dataclass
class ParsedEntry:
"""Parsed log entry."""
raw_line: str
format: LogFormat
timestamp: Optional[str]
level: Optional[str]
message: str
metadata: dict[str, Any] = field(default_factory=dict)
severity: str = "info"
def to_dict(self) -> dict:
"""Convert to dictionary."""
return {
"raw_line": self.raw_line,
"format": self.format.value,
"timestamp": self.timestamp,
"level": self.level,
"message": self.message,
"metadata": self.metadata,
"severity": self.severity,
}
class BaseParser(ABC):
"""Base parser class."""
@abstractmethod
def get_format(self) -> LogFormat:
"""Get the format this parser handles."""
pass
@abstractmethod
def parse(self, line: str) -> Optional[ParsedEntry]:
"""Parse a log line."""
pass