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.
This commit is contained in:
Goffi 2022-08-31 17:07:03 +02:00
commit eb797103e6
2 changed files with 30 additions and 25 deletions

View file

@ -1166,9 +1166,10 @@ class APGateway:
if self.verbose:
__, actor_args = self.parseAPURL(actor_id)
actor_account = actor_args[0]
log.info(
f"==> {actor_account} is signing and posting to {url}:\n{pformat(doc)}"
)
to_log = [
"",
f">>> {actor_account} is signing and posting to {url}:\n{pformat(doc)}"
]
p_url = parse.urlparse(url)
body = json.dumps(doc).encode()
@ -1183,9 +1184,13 @@ class APGateway:
}
headers, __ = self.getSignatureData(self.getKeyId(actor_id), headers)
headers["Content-Type"] = (
'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'
)
if self.verbose:
if self.verbose>=3:
h_to_log = "\n".join(f" {k}: {v}" for k,v in headers.items())
to_log.append(f" headers:\n{h_to_log}")
to_log.append("---")
log.info("\n".join(to_log))
resp = await treq.post(
url,
body,

View file

@ -821,18 +821,25 @@ class HTTPAPGServer(web_resource.Resource):
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 @@ class HTTPAPGServer(web_resource.Resource):
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"):