Mercurial > libervia-backend
comparison 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 |
comparison
equal
deleted
inserted
replaced
3880:03761f8ba8bb | 3881:2e4a0f6050bd |
---|---|
819 self, | 819 self, |
820 request: "HTTPRequest", | 820 request: "HTTPRequest", |
821 signing_actor: Optional[str] = None | 821 signing_actor: Optional[str] = None |
822 ) -> None: | 822 ) -> None: |
823 if self.apg.verbose: | 823 if self.apg.verbose: |
824 from pprint import pformat | |
825 to_log = [ | |
826 "", | |
827 f"<<< got {request.method.decode()} request - {request.uri.decode()}" | |
828 ] | |
824 try: | 829 try: |
825 data = json.load(request.content) | 830 data = json.load(request.content) |
826 except (json.JSONDecodeError, ValueError) as e: | 831 except (json.JSONDecodeError, ValueError): |
827 pass | 832 pass |
828 else: | 833 else: |
829 from pprint import pformat | 834 to_log.append(pformat(data)) |
830 log.info( | |
831 f"==> got {request.method.decode()} request:\n{pformat(data)}\n---" | |
832 ) | |
833 | |
834 finally: | 835 finally: |
835 request.content.seek(0) | 836 request.content.seek(0) |
837 if self.apg.verbose>=3: | |
838 headers = "\n".join( | |
839 f" {k.decode()}: {v.decode()}" | |
840 for k,v in request.getAllHeaders().items() | |
841 ) | |
842 to_log.append(f" headers:\n{headers}") | |
836 | 843 |
837 path = request.path.decode() | 844 path = request.path.decode() |
838 ap_url = parse.urljoin( | 845 ap_url = parse.urljoin( |
839 f"https://{self.apg.public_url}", | 846 f"https://{self.apg.public_url}", |
840 path | 847 path |
869 request, account_jid, node, ap_account, ap_url, signing_actor | 876 request, account_jid, node, ap_account, ap_url, signing_actor |
870 ) | 877 ) |
871 if ret_data is not None: | 878 if ret_data is not None: |
872 request.setHeader("content-type", CONTENT_TYPE_AP) | 879 request.setHeader("content-type", CONTENT_TYPE_AP) |
873 request.write(json.dumps(ret_data).encode()) | 880 request.write(json.dumps(ret_data).encode()) |
881 if self.apg.verbose: | |
882 to_log.append(f"--- RET (code: {request.code})---") | |
874 if self.apg.verbose>=2: | 883 if self.apg.verbose>=2: |
875 from pprint import pformat | 884 if ret_data is not None: |
876 to_log = [f"==> ret (code: {request.code}):\n{pformat(ret_data)}"] | 885 to_log.append(f"{pformat(ret_data)}") |
877 log.info( | 886 to_log.append("---") |
878 | 887 log.info("\n".join(to_log)) |
879 ) | |
880 if self.apg.verbose>=3: | |
881 headers = "\n".join( | |
882 f" {k.decode()}: {v.decode()}" | |
883 for k,v in request.getAllHeaders().items() | |
884 ) | |
885 to_log.append(" headers:\n{headers}") | |
886 to_log.append("---") | |
887 log.info("\n".join(to_log)) | |
888 request.finish() | 888 request.finish() |
889 | 889 |
890 async def APPostRequest(self, request: "HTTPRequest"): | 890 async def APPostRequest(self, request: "HTTPRequest"): |
891 try: | 891 try: |
892 signing_actor = await self.checkSignature(request) | 892 signing_actor = await self.checkSignature(request) |