1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-17 01:22:19 +03:00

Output to a file instead of stdout

This commit is contained in:
A_D 2021-05-21 10:55:55 +02:00
parent 4ef153b1b2
commit 520d80775d
No known key found for this signature in database
GPG Key ID: 4BE9EB7DF45076C4

View File

@ -1,9 +1,12 @@
"""Simple HTTP listener to be used with debugging EDDN sends."""
import threading
from http import server
from typing import Any
from typing import Any, Tuple
import pathlib
import tempfile
from EDMCLogging import get_main_logger
from config import appname
logger = get_main_logger()
@ -11,6 +14,12 @@ logger = get_main_logger()
class LoggingHandler(server.BaseHTTPRequestHandler):
"""HTTP Handler implementation that logs to EDMCs logger."""
def __init__(self, request: bytes, client_address: Tuple[str, int], server) -> None:
super().__init__(request, client_address, server)
self.output_lock = threading.Lock()
self.output_file_path = pathlib.Path(tempfile.gettempdir()) / f'{appname}' / 'eddn-listener.jsonl'
self.output_file = self.output_file_path.open('w')
def log_message(self, format: str, *args: Any) -> None:
"""Override default handler logger with EDMC logger."""
logger.info(format % args)
@ -19,8 +28,9 @@ class LoggingHandler(server.BaseHTTPRequestHandler):
"""Handle POST."""
logger.info("Received a POST!")
data = self.rfile.read(int(self.headers['Content-Length']))
logger.info(f"POST DATA FOLLOWS\n{data.decode('utf-8', errors='replace')}")
self.send_response(200, "OK")
with self.output_lock:
self.output_file.write(data.decode('utf-8', errors='replace'))
def run_listener(port: int = 9090) -> None: