| 185 | return environ |
| 186 | |
| 187 | def _log(self, status_code: int, request: httputil.HTTPServerRequest) -> None: |
| 188 | if status_code < 400: |
| 189 | log_method = access_log.info |
| 190 | elif status_code < 500: |
| 191 | log_method = access_log.warning |
| 192 | else: |
| 193 | log_method = access_log.error |
| 194 | request_time = 1000.0 * request.request_time() |
| 195 | assert request.method is not None |
| 196 | assert request.uri is not None |
| 197 | summary = ( |
| 198 | request.method # type: ignore[operator] |
| 199 | + " " |
| 200 | + request.uri |
| 201 | + " (" |
| 202 | + request.remote_ip |
| 203 | + ")" |
| 204 | ) |
| 205 | log_method("%d %s %.2fms", status_code, summary, request_time) |
| 206 | |
| 207 | |
| 208 | HTTPRequest = httputil.HTTPServerRequest |