import json
import os
from aioquic.quic.logger import QuicLogger, QuicLoggerTrace
class QuicDirectoryLogger(QuicLogger):
"""
Custom QUIC logger which writes one trace per file.
"""
def __init__(self, path: str) -> None:
if not os.path.isdir(path):
raise ValueError("QUIC log output directory '%s' does not exist" % path)
self.path = path
super().__init__()
def end_trace(self, trace: QuicLoggerTrace) -> None:
trace_dict = trace.to_dict()
trace_path = os.path.join(
self.path, trace_dict["common_fields"]["ODCID"] + ".qlog"
)
with open(trace_path, "w") as logger_fp:
json.dump({"qlog_version": "draft-01", "traces": [trace_dict]}, logger_fp)
self._traces.remove(trace)