diff --git a/stapler/handlers.py b/stapler/handlers.py index 6fba66e..bca736e 100644 --- a/stapler/handlers.py +++ b/stapler/handlers.py @@ -27,6 +27,7 @@ if typing.TYPE_CHECKING: class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler): SANITIZE_REGEX = re.compile(r"[^\x20-\x7F]+") timeout = 10 + REQUEST_COUNT = 0 @typing.override def __init__( @@ -41,6 +42,7 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler): self.__host: str | None = None self.__in_size: int | None = None self.https: bool = params.https + self.__class__.REQUEST_COUNT += 1 super().__init__(*args, **kwargs) with contextlib.suppress(Exception): self.connection.close() @@ -92,6 +94,20 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler): fmt = "%s - " + format self.logger.error(fmt, self.address_string(), *args) + def _pre_log_request(self) -> None: # pragma: no cover + args = ( + "...", + self.address_string(), + self.host, + format(self.__class__.REQUEST_COUNT, "07_d"), + self.SANITIZE_REGEX.sub("?", self.requestline), + ) + fmt = "← %s - %s - %s - %s - %s" + if self.in_size > 0: + args = (*args, self.in_size) + fmt += " - %s" + self.logger.debug(fmt, *args) + @typing.override def log_request(self, code: str = "?", size: str = "-") -> None: # ty:ignore[invalid-method-override] # pragma: no cover if isinstance(code, http.HTTPStatus): @@ -111,9 +127,10 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler): code, self.address_string(), self.host, + format(self.__class__.REQUEST_COUNT, "07_d"), self.SANITIZE_REGEX.sub("?", self.requestline), ) - fmt = "→ %s - %s - %s - %s" + fmt = "→ %s - %s - %s - %s - %s" if size != "": args = (*args, size) fmt += " - %s" @@ -236,19 +253,6 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler): and len(self.headers[key]) > 0 ) - def _pre_log_request(self) -> None: # pragma: no cover - args = ( - "...", - self.address_string(), - self.host, - self.SANITIZE_REGEX.sub("?", self.requestline), - ) - fmt = "← %s - %s - %s - %s" - if self.in_size > 0: - args = (*args, self.in_size) - fmt += " - %s" - self.logger.debug(fmt, *args) - def server_signature(self) -> str: return self.server_version + "\n\n" + STAPLER_ASCII + "\n"