From edee5ad7b48cc288758b6e90499faf6718afb440 Mon Sep 17 00:00:00 2001 From: Dmitrii Andreev Date: Sun, 7 Jan 2024 21:19:14 +0300 Subject: [PATCH] Refactor logging in server.py --- src/server.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/server.py b/src/server.py index 7710fd7..48ef118 100644 --- a/src/server.py +++ b/src/server.py @@ -1,24 +1,33 @@ """Server module for the application""" import os import mimetypes -from pprint import pprint from pathlib import Path from aiohttp import web +import logger from rss_generator import generate_rss_feed -from logger import log_event routes = web.RouteTableDef() +def log_request(request, level="INFO"): + """Log an HTTP request""" + logger.log_event("http_request", { + "method": request.method, + "path": request.path, + "remote": request.remote, + "query_string": request.query_string, + "headers": dict(request.headers) + }, level) + @routes.get('/health') async def helth_check(request): """Health check endpoint""" - log_event("health_check_requested", {"method": "GET", "path": request.path}, level="INFO") + log_request(request) return web.Response(text="OK") @routes.get('/rss') async def rss_feed(request): """RSS feed endpoint""" - log_event("rss_feed_requested", {"method": "GET", "path": request.path}, level="INFO") + log_request(request) output_directory = request.app['config'].output_directory files = [f for f in os.listdir(output_directory) if f.endswith('.mp3')] rss_xml = generate_rss_feed(files, output_directory, request.app['config'].server_host) @@ -28,18 +37,17 @@ async def rss_feed(request): async def serve_file(request): """File serving endpoint""" file_name = request.match_info['file_name'] - log_event("file_serve_requested", {"method": "GET", "path": request.path, "file_name": file_name}, level="INFO") + log_request(request) output_directory = request.app['config'].output_directory file_path = os.path.join(output_directory, file_name) - pprint(file_path) if not Path(output_directory).joinpath(file_name).resolve().relative_to(Path(output_directory).resolve()): - log_event("file_access_denied", {"file_name": file_name}, level="WARNING") + logger.log_event("file_access_denied", {"file_name": file_name}, level="WARNING") return web.Response(status=403, text='Access denied') if not os.path.exists(file_path): - log_event("file_not_found", {"file_name": file_name}, level="WARNING") + logger.log_event("file_not_found", {"file_name": file_name}, level="WARNING") return web.Response(status=404, text='File not found') file = os.path.basename(file_path) @@ -58,6 +66,5 @@ async def start_server(config): runner = web.AppRunner(app) await runner.setup() site = web.TCPSite(runner, '0.0.0.0', config.server_port) - log_event('server_starting', {'port': config.server_port}, level="INFO") + logger.log_event('server_starting', {'port': config.server_port}, level="DEBUG") await site.start() - log_event('server_started', {'port': config.server_port}, level="INFO")