diff sat/plugins/plugin_comp_ap_gateway/http_server.py @ 3881:2e4a0f6050bd

component AP gateway: better verbose logging: gather data to show according to verbosity and log it all at once with a small `<<<` or `>>>` indicating the direction. With a verbosity of 3, headers are also shown.
author Goffi <goffi@goffi.org>
date Wed, 31 Aug 2022 17:07:03 +0200
parents bd84d289fc94
children 1bd44367337d
line wrap: on
line diff
--- a/sat/plugins/plugin_comp_ap_gateway/http_server.py	Wed Aug 31 17:07:01 2022 +0200
+++ b/sat/plugins/plugin_comp_ap_gateway/http_server.py	Wed Aug 31 17:07:03 2022 +0200
@@ -821,18 +821,25 @@
         signing_actor: Optional[str] = None
     ) -> None:
         if self.apg.verbose:
+            from pprint import pformat
+            to_log = [
+                "",
+                f"<<< got {request.method.decode()} request - {request.uri.decode()}"
+            ]
             try:
                 data = json.load(request.content)
-            except (json.JSONDecodeError, ValueError) as e:
+            except (json.JSONDecodeError, ValueError):
                 pass
             else:
-                from pprint import pformat
-                log.info(
-                    f"==> got {request.method.decode()} request:\n{pformat(data)}\n---"
-                )
-
+                to_log.append(pformat(data))
             finally:
                 request.content.seek(0)
+            if self.apg.verbose>=3:
+                headers = "\n".join(
+                    f"    {k.decode()}: {v.decode()}"
+                    for k,v in request.getAllHeaders().items()
+                )
+                to_log.append(f"  headers:\n{headers}")
 
         path = request.path.decode()
         ap_url = parse.urljoin(
@@ -871,20 +878,13 @@
         if ret_data is not None:
             request.setHeader("content-type", CONTENT_TYPE_AP)
             request.write(json.dumps(ret_data).encode())
+        if self.apg.verbose:
+            to_log.append(f"--- RET (code: {request.code})---")
             if self.apg.verbose>=2:
-                from pprint import pformat
-                to_log = [f"==> ret (code: {request.code}):\n{pformat(ret_data)}"]
-                log.info(
-
-                )
-                if self.apg.verbose>=3:
-                    headers = "\n".join(
-                        f"    {k.decode()}: {v.decode()}"
-                        for k,v in request.getAllHeaders().items()
-                    )
-                    to_log.append("  headers:\n{headers}")
-                to_log.append("---")
-                log.info("\n".join(to_log))
+                if ret_data is not None:
+                    to_log.append(f"{pformat(ret_data)}")
+                    to_log.append("---")
+            log.info("\n".join(to_log))
         request.finish()
 
     async def APPostRequest(self, request: "HTTPRequest"):