Add invocation ID and logger name to JSON log

Update typehint
Update docstring
This commit is contained in:
Joe Knapper 2026-07-08 13:41:27 +01:00 committed by Julian Stirling
parent 6b67078129
commit 77781d5c4d

View file

@ -56,6 +56,7 @@ def configure_logging(log_folder: str, debug: bool = False) -> None:
ofm_format_str = "[%(asctime)s] [%(levelname)s] %(message)s" ofm_format_str = "[%(asctime)s] [%(levelname)s] %(message)s"
OFM_HANDLER.setFormatter(OFMLogFileFormatter(ofm_format_str)) OFM_HANDLER.setFormatter(OFMLogFileFormatter(ofm_format_str))
OFM_HANDLER.addFilter(UvicornAccessFilter()) OFM_HANDLER.addFilter(UvicornAccessFilter())
OFM_HANDLER.addFilter(inject_invocation_id)
OFM_HANDLER.level = root_logger.level OFM_HANDLER.level = root_logger.level
root_logger.addHandler(OFM_HANDLER) root_logger.addHandler(OFM_HANDLER)
@ -156,7 +157,7 @@ class OFMHandler(logging.Handler):
how many can be returned over HTTP. how many can be returned over HTTP.
""" """
super().__init__(level=level) super().__init__(level=level)
self._log: list[str] = [] self._log: list[dict] = []
self._max_logs = max_logs self._max_logs = max_logs
# start at -1 so first record is 0 # start at -1 so first record is 0
self._running_counter = -1 self._running_counter = -1
@ -170,8 +171,9 @@ class OFMHandler(logging.Handler):
"level": record.levelname, "level": record.levelname,
"summary": msg.split("\n")[0], "summary": msg.split("\n")[0],
"message": msg, "message": msg,
"invocation_id": getattr(record, "invocation_id", None),
"logger": record.name,
"sequence": self._running_counter, "sequence": self._running_counter,
"expanded": False,
} }
def append_record(self, record: logging.LogRecord) -> None: def append_record(self, record: logging.LogRecord) -> None:
@ -199,7 +201,10 @@ class OFMHandler(logging.Handler):
@property @property
def log_history(self) -> list[dict]: def log_history(self) -> list[dict]:
"""Return the log history up to the maximum number of logs.""" """Return the log history up to the maximum number of logs.
Order is reversed so most recent logs are at the top.
"""
return list(reversed(self._log)) return list(reversed(self._log))