import logging import sys import time from typing import Optional import click from colorlog import ColoredFormatter from loglens.analyzers.analyzer import LogAnalyzer from loglens.formatters.json_formatter import JSONFormatter from loglens.formatters.table_formatter import TableFormatter from loglens.formatters.text_formatter import TextFormatter from loglens.parsers.base import LogFormat def setup_logging(verbosity: int = 0) -> None: """Setup logging configuration.""" log_levels = ["ERROR", "WARNING", "INFO", "DEBUG"] level_idx = min(verbosity, len(log_levels) - 1) level = log_levels[level_idx] handler = ColoredFormatter( "%(log_color)s%(levelname)-8s%(reset)s %(message)s", log_colors={ "DEBUG": "cyan", "INFO": "green", "WARNING": "yellow", "ERROR": "red", "CRITICAL": "red,bg_white", }, ) logger = logging.getLogger("loglens") logger.setLevel(level) logger.handlers = [handler] @click.group() @click.option("--verbosity", "-v", count=True, help="Increase output verbosity") @click.option("--config", type=click.Path(exists=True), help="Path to config file") @click.version_option(version="0.1.0", prog_name="loglens") @click.pass_context def main(ctx: click.Context, verbosity: int, config: str) -> None: """LogLens - Parse, analyze, and summarize log files.""" from loglens import __version__ ctx.ensure_object(dict) ctx.obj["config"] = config ctx.obj["version"] = __version__ setup_logging(verbosity)