Skip to content

Commit

Permalink
dh: Fix loggingHandler to re-enrich after every op
Browse files Browse the repository at this point in the history
  • Loading branch information
rmandvikar committed Sep 22, 2023
1 parent 947c43e commit be34bfc
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 11 deletions.
24 changes: 15 additions & 9 deletions src/rm.DelegatingHandlers/LoggingHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
ILogger l = logger;
l = await l.ForContextAsync(request, loggingFormatter)
ILogger lRequest = logger;
lRequest = await lRequest.ForContextAsync(request, loggingFormatter)
.ConfigureAwait(false);
l.Information("request/");
lRequest.Information("request/");

var stopwatch = Stopwatch.StartNew();
try
Expand All @@ -45,20 +45,26 @@ protected override async Task<HttpResponseMessage> SendAsync(

stopwatch.Stop();

l = await l.ForContextAsync(response, loggingFormatter)
ILogger lResponse = logger;
lResponse = await lResponse.ForContextAsync(request, loggingFormatter)
.ConfigureAwait(false);
l = l.ForContext(stopwatch, loggingFormatter);
l.Information("request/response");
lResponse = await lResponse.ForContextAsync(response, loggingFormatter)
.ConfigureAwait(false);
lResponse = lResponse.ForContext(stopwatch, loggingFormatter);
lResponse.Information("request/response");

return response;
}
catch (Exception ex)
{
stopwatch.Stop();

l = l.ForContext(ex, loggingFormatter);
l = l.ForContext(stopwatch, loggingFormatter);
l.Information(ex, "request/exception");
ILogger lException = logger;
lException = await logger.ForContextAsync(request, loggingFormatter)
.ConfigureAwait(false);
lException = lException.ForContext(ex, loggingFormatter);
lException = lException.ForContext(stopwatch, loggingFormatter);
lException.Information(ex, "request/exception");

throw;
}
Expand Down
15 changes: 13 additions & 2 deletions tests/rm.DelegatingHandlersTest/LoggingHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ public async Task Logs_Request_Response()
var propertyValue1 = "propertyValue1";
var property2 = "property02";
var propertyValue2 = "propertyValue02";
var property3 = "property03";
var propertyValue3 = "propertyValue03";
using var request =
new HttpRequestMessage(method, uri)
{
Expand Down Expand Up @@ -137,10 +139,18 @@ public async Task Logs_Request_Response()
#endif

var shortCircuitingCannedResponseHandler = new ShortCircuitingCannedResponseHandler(response);
var delegateHandler = new DelegateHandler(
postDelegate: (request, response, ct) =>
{
#pragma warning disable CS0618 // Type or member is obsolete
request.Properties.Add(property3, propertyValue3);
#pragma warning restore CS0618 // Type or member is obsolete
return Task.FromResult(response);
});
var loggingHandler = new LoggingHandler(logger, new LoggingFormatter());

using var invoker = HttpMessageInvokerFactory.Create(
loggingHandler, shortCircuitingCannedResponseHandler);
loggingHandler, delegateHandler, shortCircuitingCannedResponseHandler);

using var _ = await invoker.SendAsync(request, CancellationToken.None);

Expand All @@ -159,6 +169,7 @@ public async Task Logs_Request_Response()
.And.WithProperty($"request.Content").WithValue(requestContent)
.And.WithProperty($"request.Property.{property1}").WithValue(propertyValue1)
.And.WithProperty($"request.Property.{property2}").WithValue(propertyValue2)
.And.WithProperty($"request.Property.{property3}").WithValue(propertyValue3)
.And.WithProperty($"response.Version").WithValue(version)
.And.WithProperty($"response.StatusCode").WithValue((int)statusCode)
.And.WithProperty($"response.ReasonPhrase").WithValue(statusCode.ToString())
Expand Down Expand Up @@ -224,8 +235,8 @@ public async Task Logs_Request_Exception()
response.Headers.Add(header2, headerValue2);

var swallowingHandler = new SwallowingHandler(ex => ex is TurnDownForWhatException);
var throwingHandler = new ThrowingHandler(new TurnDownForWhatException());
var loggingHandler = new LoggingHandler(logger, new LoggingFormatter());
var throwingHandler = new ThrowingHandler(new TurnDownForWhatException());

using var invoker = HttpMessageInvokerFactory.Create(
swallowingHandler, loggingHandler, throwingHandler);
Expand Down

0 comments on commit be34bfc

Please sign in to comment.