Skip to content

Commit f605ea3

Browse files
authored
feat: enhance logging with Rich console output and remove log format
feat: enhance logging with Rich console output and remove log format
2 parents b37a2fa + d7f987b commit f605ea3

2 files changed

Lines changed: 20 additions & 28 deletions

File tree

src/python_response_time/core/logging.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@
44

55
from loguru import logger
66

7-
log_format = (
8-
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | "
9-
"<level>{level: <8}</level> | "
10-
"<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - "
11-
"<level>{message}</level>"
12-
)
13-
147

158
def setup_logger(level: str = "INFO"):
169
"""Configure and return a Loguru logger instance.
@@ -27,7 +20,7 @@ def setup_logger(level: str = "INFO"):
2720
if level.upper() == "SILENT":
2821
logger.add(
2922
"app.log",
30-
format=log_format,
23+
serialize=True,
3124
level="ERROR",
3225
rotation="1 MB",
3326
retention="10 days",
@@ -36,15 +29,15 @@ def setup_logger(level: str = "INFO"):
3629
else:
3730
logger.add(
3831
sys.stdout,
39-
format=log_format,
32+
serialize=True,
4033
level=level,
4134
backtrace=True,
4235
diagnose=True,
4336
enqueue=True,
4437
)
4538
logger.add(
4639
"app.log",
47-
format=log_format,
40+
serialize=True,
4841
level=level,
4942
rotation="1 MB",
5043
retention="10 days",

src/python_response_time/main.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,46 @@
33
import time
44

55
import requests
6-
from loguru import logger
6+
from rich.console import Console
77

88
from python_response_time.core import app_settings, setup_logger
99

10-
setup_logger(app_settings.LOG_LEVEL)
10+
console = Console()
1111

1212

1313
def run_app():
14-
"""Run a simple HTTP benchmark against the configured target URL."""
15-
logger.info(f"Target URL: {app_settings.TARGET_URL}")
16-
logger.info(f"Number of Requests: {app_settings.NUM_REQUESTS}")
17-
logger.info(f"Concurrency: {app_settings.CONCURRENCY}")
18-
logger.info(f"Timeout: {app_settings.TIMEOUT} seconds")
19-
logger.info(f"Request Delay: {app_settings.REQUEST_DELAY} seconds")
20-
logger.info(f"SSL Verify: {app_settings.VERIFY_SSL}")
14+
"""Run HTTP benchmark and display results via Rich."""
15+
logger = setup_logger(app_settings.LOG_LEVEL)
16+
console.print("[bold cyan]HTTP Benchmark Starting...[/bold cyan]")
17+
console.print(f"Target: {app_settings.TARGET_URL}")
18+
console.print(f"Requests: {app_settings.NUM_REQUESTS}")
19+
console.print(f"Concurrency: {app_settings.CONCURRENCY}")
20+
console.print(f"Timeout: {app_settings.TIMEOUT}s")
21+
console.print(f"Delay: {app_settings.REQUEST_DELAY}s")
22+
console.print(f"SSL Verify: {app_settings.VERIFY_SSL}\n")
2123

2224
session = requests.Session()
2325

24-
logger.info("Starting HTTP benchmark...")
26+
console.print("[bold green]Running benchmark...[/bold green]\n")
2527

2628
for i in range(app_settings.NUM_REQUESTS):
27-
start_time = time.time()
28-
29+
start_time = time.perf_counter()
2930
try:
3031
response = session.get(
3132
str(app_settings.TARGET_URL),
3233
timeout=app_settings.TIMEOUT,
3334
verify=app_settings.VERIFY_SSL,
3435
)
35-
response.raise_for_status()
36-
37-
elapsed_time_ms = (time.time() - start_time) * 1000
36+
elapsed_ms = (time.perf_counter() - start_time) * 1000
3837
logger.info(
39-
f"Request {i + 1}: {response.status_code} - {elapsed_time_ms:.2f} ms"
38+
f"Request {i + 1}: {response.status_code} in {elapsed_ms:.2f} ms"
4039
)
4140

4241
except requests.exceptions.SSLError as e:
43-
logger.error(f"Request {i + 1} SSL error: {e}")
42+
console.print(f"[red]Request {i + 1} SSL error: {e}[/red]")
4443

4544
except requests.RequestException as e:
46-
logger.error(f"Request {i + 1} failed: {e}")
45+
console.print(f"[red]Request {i + 1} failed: {e}[/red]")
4746

4847
finally:
4948
if app_settings.REQUEST_DELAY > 0:

0 commit comments

Comments
 (0)