From d7f987b59df60688dea440f861f9b8157dc8268b Mon Sep 17 00:00:00 2001 From: Miles Kane Date: Thu, 26 Mar 2026 23:56:23 -0500 Subject: [PATCH] feat: enhance logging with Rich console output and remove log format --- src/python_response_time/core/logging.py | 13 ++------- src/python_response_time/main.py | 35 ++++++++++++------------ 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/python_response_time/core/logging.py b/src/python_response_time/core/logging.py index bc5bd24..62a0656 100644 --- a/src/python_response_time/core/logging.py +++ b/src/python_response_time/core/logging.py @@ -4,13 +4,6 @@ from loguru import logger -log_format = ( - "{time:YYYY-MM-DD HH:mm:ss.SSS} | " - "{level: <8} | " - "{name}:{function}:{line} - " - "{message}" -) - def setup_logger(level: str = "INFO"): """Configure and return a Loguru logger instance. @@ -27,7 +20,7 @@ def setup_logger(level: str = "INFO"): if level.upper() == "SILENT": logger.add( "app.log", - format=log_format, + serialize=True, level="ERROR", rotation="1 MB", retention="10 days", @@ -36,7 +29,7 @@ def setup_logger(level: str = "INFO"): else: logger.add( sys.stdout, - format=log_format, + serialize=True, level=level, backtrace=True, diagnose=True, @@ -44,7 +37,7 @@ def setup_logger(level: str = "INFO"): ) logger.add( "app.log", - format=log_format, + serialize=True, level=level, rotation="1 MB", retention="10 days", diff --git a/src/python_response_time/main.py b/src/python_response_time/main.py index 30e247a..8058b82 100644 --- a/src/python_response_time/main.py +++ b/src/python_response_time/main.py @@ -3,47 +3,46 @@ import time import requests -from loguru import logger +from rich.console import Console from python_response_time.core import app_settings, setup_logger -setup_logger(app_settings.LOG_LEVEL) +console = Console() def run_app(): - """Run a simple HTTP benchmark against the configured target URL.""" - logger.info(f"Target URL: {app_settings.TARGET_URL}") - logger.info(f"Number of Requests: {app_settings.NUM_REQUESTS}") - logger.info(f"Concurrency: {app_settings.CONCURRENCY}") - logger.info(f"Timeout: {app_settings.TIMEOUT} seconds") - logger.info(f"Request Delay: {app_settings.REQUEST_DELAY} seconds") - logger.info(f"SSL Verify: {app_settings.VERIFY_SSL}") + """Run HTTP benchmark and display results via Rich.""" + logger = setup_logger(app_settings.LOG_LEVEL) + console.print("[bold cyan]HTTP Benchmark Starting...[/bold cyan]") + console.print(f"Target: {app_settings.TARGET_URL}") + console.print(f"Requests: {app_settings.NUM_REQUESTS}") + console.print(f"Concurrency: {app_settings.CONCURRENCY}") + console.print(f"Timeout: {app_settings.TIMEOUT}s") + console.print(f"Delay: {app_settings.REQUEST_DELAY}s") + console.print(f"SSL Verify: {app_settings.VERIFY_SSL}\n") session = requests.Session() - logger.info("Starting HTTP benchmark...") + console.print("[bold green]Running benchmark...[/bold green]\n") for i in range(app_settings.NUM_REQUESTS): - start_time = time.time() - + start_time = time.perf_counter() try: response = session.get( str(app_settings.TARGET_URL), timeout=app_settings.TIMEOUT, verify=app_settings.VERIFY_SSL, ) - response.raise_for_status() - - elapsed_time_ms = (time.time() - start_time) * 1000 + elapsed_ms = (time.perf_counter() - start_time) * 1000 logger.info( - f"Request {i + 1}: {response.status_code} - {elapsed_time_ms:.2f} ms" + f"Request {i + 1}: {response.status_code} in {elapsed_ms:.2f} ms" ) except requests.exceptions.SSLError as e: - logger.error(f"Request {i + 1} SSL error: {e}") + console.print(f"[red]Request {i + 1} SSL error: {e}[/red]") except requests.RequestException as e: - logger.error(f"Request {i + 1} failed: {e}") + console.print(f"[red]Request {i + 1} failed: {e}[/red]") finally: if app_settings.REQUEST_DELAY > 0: