refactor: Improve request/response body logging

pull/201/head
Robert Dailey 1 year ago
parent 9bdb5f364c
commit efd1863efd

@ -14,7 +14,7 @@ public static class FlurlLogging
{
var url = urlInterceptor(call.Request.Url.Clone());
log.Debug("HTTP Request: {Method} {Url}", call.HttpRequestMessage.Method, url);
LogBody(log, url, call.RequestBody);
LogBody(log, url, "Request", call.HttpRequestMessage.Method, call.RequestBody);
};
settings.AfterCallAsync = async call =>
@ -26,7 +26,7 @@ public static class FlurlLogging
var content = call.Response?.ResponseMessage.Content;
if (content is not null)
{
LogBody(log, url, await content.ReadAsStringAsync());
LogBody(log, url, "Response", call.HttpRequestMessage.Method, await content.ReadAsStringAsync());
}
};
@ -42,15 +42,23 @@ public static class FlurlLogging
};
}
private static void LogBody(ILogger log, Url url, string? body)
private static void LogBody(ILogger log, Url url, string direction, HttpMethod method, string? body)
{
if (body is null)
{
return;
}
try
{
body = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(body));
log.Verbose("HTTP Body: {Url} {Body}", url, body);
}
catch (JsonException)
{
// Ignore failures here because we'll log the body anyway.
}
log.Verbose("HTTP {Direction} Body: {Method} {Url} {Body}", direction, method, url, body);
}
public static Url SanitizeUrl(Url url)

Loading…
Cancel
Save